天干地支的算法公式,时辰的天干怎么算

首页 > 教育 > 作者:YD1662024-05-19 19:36:53

最近在研究易经,想从底层了解下易经是什么,目标是将易经程序化。目前市面上有不少易经卜卦的程序了,但是不知道原理的话,也不明白这些已有的卜卦程序对还是不对,而且如果有不同的想法也没办法进一步细化。

既然自己是程序员,就不如自己写一套。

天干地支的算法公式,时辰的天干怎么算(1)

今天记录下易经里面的,公历年转化天干地支的算法。

首先要记住公式,天*计算公式内容如下:

4甲 5乙 6丙 7丁 8戊 9己 0庚 1辛 2壬 3癸

计算方式就是,公历年最后一位数对应公式中的数字就是天干。

地支的计算公式内容如下:

4子(鼠) 5丑(牛) 6寅(虎) 7卯(兔) 8辰(龙) 9巳(蛇) 10午(马) 11未(羊) 0申(猴) 1酉(鸡) 2戌(狗) 3亥(猪)

计算方式是,公历年对12取余数得到的数值对应公式中的数字的就是地支。

比如 2000 年,天干0,对应 庚,地支 2000对12取余,余数为8 对应 辰龙,则 2000 年为庚辰年,龙年。

比如 2004 年,天干4,对应甲,地支 2000对12取余,余数为0 对应 申猴,则 2004 年为甲申年,猴年。

用百度的万年历进行核对,目前确定是没有问题的,最后附上一个简单的java程序。感兴趣欢迎留言讨论。

天干地支的算法公式,时辰的天干怎么算(2)

public class NianUtils { public static void main(String[] args) { NianUtils nu = new NianUtils(); int year = 2000; for (int i = 0; i < 30; i ) { System.out.println("公历年:" year ", 对应天干地支:" nu.getTiangan(year) nu.getDizhi(year) ",生肖:" nu.getShengxiao(year)); year = year 1; } } public String getTiangan(Integer year) { Map<Integer, String> tianganMap = new HashMap<>(); tianganMap.put(4, "甲"); tianganMap.put(5, "乙"); tianganMap.put(6, "丙"); tianganMap.put(7, "丁"); tianganMap.put(8, "戊"); tianganMap.put(9, "己"); tianganMap.put(0, "庚"); tianganMap.put(1, "辛"); tianganMap.put(2, "壬"); tianganMap.put(3, "癸"); String[] yearArr = (year "").split(""); Integer lastNum = Integer.parseInt(yearArr[yearArr.length - 1]); return tianganMap.get(lastNum); } public String getDizhi(Integer year) { Map<Integer, String> dizhiMap = new HashMap<>(); dizhiMap.put(4, "子"); dizhiMap.put(5, "丑"); dizhiMap.put(6, "寅"); dizhiMap.put(7, "卯"); dizhiMap.put(8, "辰"); dizhiMap.put(9, "巳"); dizhiMap.put(10, "午"); dizhiMap.put(11, "未"); dizhiMap.put(0, "申"); dizhiMap.put(1, "酉"); dizhiMap.put(2, "戌"); dizhiMap.put(3, "亥"); Integer yushuNum = year % 12; return dizhiMap.get(yushuNum); } public String getShengxiao(Integer year) { Map<Integer, String> shengxiaoMap = new HashMap<>(); shengxiaoMap.put(4, "鼠"); shengxiaoMap.put(5, "牛"); shengxiaoMap.put(6, "虎"); shengxiaoMap.put(7, "兔"); shengxiaoMap.put(8, "龙"); shengxiaoMap.put(9, "蛇"); shengxiaoMap.put(10, "马"); shengxiaoMap.put(11, "羊"); shengxiaoMap.put(0, "猴"); shengxiaoMap.put(1, "鸡"); shengxiaoMap.put(2, "狗"); shengxiaoMap.put(3, "猪"); Integer yushuNum = year % 12; return shengxiaoMap.get(yushuNum); } }

以上程序运行的结果如下:

公历年:2000, 对应天干地支:庚辰,生肖:龙 公历年:2001, 对应天干地支:辛巳,生肖:蛇 公历年:2002, 对应天干地支:壬午,生肖:马 公历年:2003, 对应天干地支:癸未,生肖:羊 公历年:2004, 对应天干地支:甲申,生肖:猴 公历年:2005, 对应天干地支:乙酉,生肖:鸡 公历年:2006, 对应天干地支:丙戌,生肖:狗 公历年:2007, 对应天干地支:丁亥,生肖:猪 公历年:2008, 对应天干地支:戊子,生肖:鼠 公历年:2009, 对应天干地支:己丑,生肖:牛 公历年:2010, 对应天干地支:庚寅,生肖:虎 公历年:2011, 对应天干地支:辛卯,生肖:兔 公历年:2012, 对应天干地支:壬辰,生肖:龙 公历年:2013, 对应天干地支:癸巳,生肖:蛇 公历年:2014, 对应天干地支:甲午,生肖:马 公历年:2015, 对应天干地支:乙未,生肖:羊 公历年:2016, 对应天干地支:丙申,生肖:猴 公历年:2017, 对应天干地支:丁酉,生肖:鸡 公历年:2018, 对应天干地支:戊戌,生肖:狗 公历年:2019, 对应天干地支:己亥,生肖:猪 公历年:2020, 对应天干地支:庚子,生肖:鼠 公历年:2021, 对应天干地支:辛丑,生肖:牛 公历年:2022, 对应天干地支:壬寅,生肖:虎 公历年:2023, 对应天干地支:癸卯,生肖:兔 公历年:2024, 对应天干地支:甲辰,生肖:龙 公历年:2025, 对应天干地支:乙巳,生肖:蛇 公历年:2026, 对应天干地支:丙午,生肖:马 公历年:2027, 对应天干地支:丁未,生肖:羊 公历年:2028, 对应天干地支:戊申,生肖:猴 公历年:2029, 对应天干地支:己酉,生肖:鸡

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.