`
mycream
  • 浏览: 55284 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

天干地支

    博客分类:
  • JAVA
 
阅读更多

想实现天干地支与数值的互换算法,在网上找到了一些相关信息,于是开工实现了。

 

目标:

已知 甲子 求得结果 1

已知 丙辰 求得结果 53

已知 55 求得结果 戊午

 

对应码表:

1.甲子   2.乙丑   3.丙寅   4.丁卯   5.戊辰   6.己巳   7.庚午   8.辛未
9.壬申  10.癸酉  11.甲戌  12.乙亥  13.丙子  14.丁丑  15.戊寅  16.己卯
17.庚辰  18.辛巳  19.壬午  20.癸未  21.甲申  22.乙酉  23.丙戌  24.丁亥
25.戊子  26.己丑  27.庚寅  28.辛卯  29.壬辰  30.癸巳  31.甲午  32.乙未
33.丙申  34.丁酉  35.戊戌  36.己亥  37.庚子  38.辛丑  39.壬寅  40.癸卯
41.甲辰  42.乙巳  43.丙午  44.丁未  45.戊申  46.己酉  47.庚戌  48.辛亥
49.壬子  50.癸丑  51.甲寅  52.乙卯  53.丙辰  54.丁巳  55.戊午  56.己未
57.庚申  58.辛酉  59.壬戌  60.癸亥

 

代码实现如下:

 

/**
 * <url>http://en.wikipedia.org/wiki/Sexagenary_cycle</url>
 */
public class Sexagenary {
	/**
	 * 输入干支,输出对应数值。
	 */
	public static int getValue(Stems stems, Branches branches) {
		int s = stems.ordinal() + 1;
		int b = branches.ordinal() + 1;

		int value = (6 * s - 5 * b + 60) % 60;
		return value;
	}
	
	/**
	 * 输入数值,输出对应干支(String)
	 */
	public static String getStemsBranches(int num) {
		if (num < 1 || num > 60) {
			throw new IllegalArgumentException("Error input, num:" + num);
		}

		int s = ((num % 10) == 0) ? 10 : (num % 10);
		int b = ((num % 12) == 0) ? 12 : (num % 12);
		
		Stems stems = Stems.values()[s - 1];
		Branches branches = Branches.values()[b - 1];

		return "" + stems + branches;
	}
		

	public static void main(String[] args) {
		System.out.println(Sexagenary.getStemsBranches(1)); // 甲子
		System.out.println(Sexagenary.getStemsBranches(53)); // 丙辰
		System.out.println("" + Sexagenary.getValue(Stems.甲, Branches.子)); // 1
		System.out.println("" + Sexagenary.getValue(Stems.丙, Branches.辰)); // 53
		System.out.println("" + Sexagenary.getValue(Stems.戊, Branches.午)); // 55
	}
}

enum Stems {
	甲, 乙, 丙, 丁, 戊, 己, 庚, 辛, 壬, 癸;
}

enum Branches {
	子, 丑, 寅, 卯, 辰, 巳, 午, 未, 申, 酉, 戌, 亥;	
}

 此外使用了 中文 作为枚举类型名(Java 支持 Unicode 的),并借助了枚举来替代数组的存储结构,简化了相关操作。

分享到:
评论

相关推荐

    易语言取某日天干地支计算

    本主题聚焦于易语言中的一个特定功能——"取某日天干地支计算"。天干地支是中国传统历法的重要组成部分,用于纪年、纪月、纪日和纪时。在这里,我们将深入探讨如何利用易语言编写代码来获取特定日期对应的天干地支,...

    基于python的天干地支纪年法计算年份名称

    在这个案例中,我们将关注一个特别的文化和娱乐相关的项目——使用Python来实现天干地支纪年法的计算。天干地支是中国古代的一种纪年方式,它结合了十天干(甲、乙、丙、丁、戊、己、庚、辛、壬、癸)和十二地支(子...

    刚刚写的一个天干地支换算程序,用DEVC++编写的一个进行公历年和天干地支的算法

    本人小白,初学C语言,用DEVC++编写的一个进行公历年和天干地支的算法,欢迎指导

    天干地支在择时中的应用初探20211017.pdf

    天干地支在择时中的应用初探 天干地支是中国古代的计时系统,用于记录和预测时间周期。天干地支系统由十个天干(甲乙丙丁戊己庚辛壬癸)和十二个地支(子丑寅卯辰巳午未申酉戌亥)组成。天干地支的阴阳属性奇数为阳...

    易语言取某日天干地支计算源码

    "易语言取某日天干地支计算源码"这个主题涉及到的是利用易语言进行日期处理,特别是计算中国传统历法中的天干地支。 天干地支是中国古代用来记录年、月、日、时的一种方法,由十天干(甲、乙、丙、丁、戊、己、庚、...

    c# 日期类,提供农历、24节气、天干地支等

    2:提供农历年月日时的干支信息; 3:提供24节气信息及计算方法。理论上计算几百几千年的节气还是没什么问题的,甚至可以精确到分/秒。 但对于普通人来说,无非是查查最近几年几十年的节气,并且只需要精确到日,...

    天干地支纪年法及其换算方法

    天干地支纪年法是中国古代一种独特的纪年方式,源于远古时期,与我国的传统文化密切相关。这一纪年体系将天干与地支相结合,形成六十种不同的组合,每六十年为一个循环,被称为“六十花甲子”。天干共有十个,包括甲...

    天干地支.txt

    日历表输入日期得到天干地支属相星座日历表输入日期得到天干地支属相星座

    带农历天干地支的jQuery日历

    【标题】"带农历天干地支的jQuery日历"是一个专门为网页开发设计的插件,它结合了中国的农历系统和传统的天干地支纪年法,为用户提供了一个直观且富有中国特色的日历显示功能。这个插件使得网页开发者能够轻松地在...

    js 干支纪年法

    干支纪年法是中国传统的纪年方式,由天干(甲、乙、丙、丁、戊、己、庚、辛、壬、癸)和地支(子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥)组合而成,每60年一个循环。在JavaScript中实现干支纪年法的转换,...

    年份天干地支计算

    输入年份,计算天干地支

    天干地支查询 VC MFC

    在IT行业中,编程时常需要处理各种数据和时间相关的任务,其中中国的传统历法——天干地支纪年法,是一个有趣的挑战。"天干地支查询 VC MFC"项目正致力于解决这一问题,它提供了在VC++环境中,利用MFC(Microsoft ...

    高中历史之历史百科天干地支纪年素材

    【天干地支纪年法】是中国古代独特的纪年方式,源自古人对自然现象的观察。天干有十个,分别为甲、乙、丙、丁、戊、己、庚、辛、壬、癸,象征着树木的生长过程。地支则有十二个,包括子、丑、寅、卯、辰、巳、午、未...

    干支時鐘 Chinese added

    JTT 加中文翻譯 可以根據的所在的位置顯示相應的干支時間 加上中文翻譯 原版請移步google play

    日期时间计算干支(八字)

    月干支需要考虑闰月,月的地支固定,天干则根据年干支和月份调整。日干支计算相对简单,只需对月干支加上日期(闰月需特殊处理)。时干支则基于日干支,每两个小时为一周期。 3. **时间处理**:在编程中,需要处理...

    java 节气 干支 源码

    干支是古代中国用来记录年、月、日、时的一种方法,由十天干(甲、乙、丙、丁、戊、己、庚、辛、壬、癸)和十二地支(子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥)组成,它们相互组合,形成60种不同的组合,即...

    小学数学数学故事天干地支纪年法

    小学数学数学故事天干地支纪年法 小学数学数学故事天干地支纪年法是中国古代的记时和记日方法,使用天干和地支两个系统来记录时间。天干是一个十进制系统,用来记录日子,共有10个字:甲、乙、丙、丁、戊、己、庚、...

    PHP计算天干地支、生肖属相、时间时辰

    1.输入年份获取对应年份的干支(即天干地支,下同) 2.输入一个干支,返回这个干支年在公元-n至n年之间的所有年份 3.输入一个年份,返回这个年份对应的生肖属相 5.输入一个24小时制的小时数,返回这个小时数对应的...

    最准确的万年历,包括公历、农历、天干地支等

    最准确的万年历,包括公历、农历、天干地支等。

    WPF 天干地支时钟表盘 可以设置24小时制纯属瞎搞 加天气预报

    WPF 天干地支时钟表盘 可以设置24小时制纯属瞎搞 加天气预报 预览可以看这里 https://blog.csdn.net/shishuwei111/article/details/81384910

Global site tag (gtag.js) - Google Analytics