干支纪日与公历的换算
从已知的公历年份计算干支纪年:年份数减3,除以10的余数是天干,除以12的余数是地支。
从已知日期计算干支纪日的公式为:
g = 4C + [C / 4] + 5y + [y / 4] + [3 * (M + 1) / 5] + d - 3
z = 8C + [C / 4] + 5y + [y / 4] + [3 * (M + 1) / 5] + d + 7 + i
其中奇数月i=0,偶数月i=6,C是世纪数减一,y是年份后两位,M是月份,d是日数。1月和2月按上一年的13月和14月来算。[ ]表示取整。g除以10的余数是天干,z除以10的余数是地支。
每年入伏的时间不固定,中伏的长短也不相同,需要查历书计算,简单地可以用“夏至三庚”这4字口诀来表示入伏的日期,即从夏至后第3个“庚”日算起,初伏为10天,中伏为10天或20天,末伏为10天。我国古代流行“干支纪日法”,用10个天干与12个地支相配而成的60组不同的名称来记日子,循环使用。每逢有庚字的日子叫庚日。庚日的“庚”字是“ 甲、乙、丙、丁、戊、己、庚、辛、壬、癸”10个天干中的第7个字,庚日每10天重复一次。从夏至开始,依照干支纪日的排列,第3个庚日为初伏,第4个庚日为中伏,立秋后第1个庚日为末伏。
如此方法计算一遍,结果今年入伏时间在7月20日。
为啥不一致捏。。。
发现:如果 [3 * (M + 1) / 5] 先算后边除法取整后再乘三的话,那就是7月19日入伏,可如果先算前边乘法再除5后取整呢,就是7月20日。。。难道问题关键就在这里???? |