好友
阅读权限10
听众
最后登录1970-1-1
|
网上找到了js版本,python版本,我试了看看计算结果是错的,比如:阳历:1990-01-01 00:00 算出来的都不准
https://liuxiaowei574.github.io/2016/09/09/wuxing/
https://github.com/swordzjj/PyLunar/blob/master/CalendarConvert.py
找到了一个 asp 的代码,部分代码如下,好像是准的,不清楚原理为什么这样计算:
'从公元0年到目前年份的天数 yearlast
yearlast = (year - 1) * 5 + (year - 1) \ 4 - (year - 1) \ 100 + (year - 1) \ 400
'计算某月某日与当年1月0日的时间差(以日为单位)yearday
For i = 1 To month - 1
Select Case i
Case 1, 3, 5, 7, 8, 10, 12
yearday = yearday + 31
Case 4, 6, 9, 11
yearday = yearday + 30
Case 2
If (year Mod 4 = 0) And ((year Mod 100) <> 0) Or (year Mod 400 = 0) Then
yearday = yearday + 29
Else
yearday = yearday + 28
End If
End Select
next
yearday = yearday + day
'计算日的六十甲子数 day60
day60 = (yearlast + yearday + 6015) Mod 60
'确定 日干 dg 日支 dz
dg = day60 Mod 10
dz = day60 Mod 12
'确定 时干 tg 时支 tz
tz = (time + 3) \ 2 Mod 12
'tg = (dg * 2 + tz + 8) Mod 10
If (tz = 0) Then
tg = (dg * 2 + tz) Mod 10
Else
tg = (dg * 2 + tz + 8) Mod 10
End If
|
|