go-calendar
1. 安装
1.1 VSOP87
本项目主要是根据 Jean Meeus 的天文算法来计算天体位置,引用了实现该算法的库soniakeys/meeus。
"VSOP87"数据文件作为天文算法中采用的VSOP87行星理论的必要文件,需要在此项目中作为环境变量导入使用。
数据文件在本项目的 VSOP87
目录中,可以下载到任何目录,添加环境变量VSOP87
即可。
1.2 go-calendar package
安装本项目只需执行以下命令即可。
go get github.com/mooncaker816/go-calendar/...
2. 适用范围
推荐: 公元前722年 - 公元3000年
3. 一些程序选用的定历规则
- 朔气同日,朔在前
- 纪年干支以春节为界,纪月干支以朔日为界(闰月同上月)
- 四柱:年柱以立春为界,月柱以节为界,日柱以零点为界,时柱以北京时间为准,未考虑地方时
4. 农历转阳历LunarToSolar
- 正月-十二月依次对应月份值1-12,若为闰月,置 leap 标记为 true
- 若查询的是武则天改历期间的农历正月,由于有一月的并存,请以11作为正月的值输入,其他不变
- 若查询的是秦历后九月,周历闰十三月当作闰九月和闰十二月处理,对应的月份值分别为9,12
5. 阳历转农历SolarToLunar
- 若输入的阳历日期在1582年10月4日之前(包含),则以儒略历日期计算农历,反之以格里历计算
- 函数返回农历年,月,日,以及闰月标志
6. 日历DayCalendar
day, err := DayCalendar(2018, 6, 6, true, nil)
if err != nil {
fmt.Printf("DayCalendar failed:%v\n", err)
return
}
fmt.Println(day)
公元2018年6月6日
星期三 双子座
JD 2458276
农历【狗】四月(大)廿三
戊戌年 丁巳月 己巳日
四柱:戊戌 戊午 己巳 甲子
7. 月历MonthCalendar
month, err := MonthCalendar(1998, 6, true, nil)
if err != nil {
fmt.Printf("MonthCalendar failed:%v\n", err)
return
}
fmt.Println(month)
📅 6月
日 一 二 三 四 五 六
☀️ ㏠ ㏡ ㏢ ㏣ ㏤ ㏥
🌛 初七 初八 初九 初十 十一 十二
☀️ ㏦ ㏧ ㏨ ㏩ ㏪ ㏫ ㏬
🌛 十三 十四 十五 十六 十七 十八 十九
☀️ ㏭ ㏮ ㏯ ㏰ ㏱ ㏲ ㏳
🌛 二十 廿一 廿二 廿三 廿四 廿五 廿六
☀️ ㏴ ㏵ ㏶ ㏷ ㏸ ㏹ ㏺
🌛 廿七 廿八 廿九 五月® 初二 初三 初四
☀️ ㏻ ㏼ ㏽
🌛 初五 初六 初七
芒种:6日 5ʰ13ᵐ23ˢ
夏至:21日 22ʰ2ᵐ35ˢ
8. 年历YearCalendar
year, err := YearCalendar(2017, true)
if err != nil {
fmt.Printf("YearCalendar failed:%v\n", err)
return
}
fmt.Println(year)
🗓️ 2017年(平)
📅 1月
日 一 二 三 四 五 六
☀️ ㏠ ㏡ ㏢ ㏣ ㏤ ㏥ ㏦
🌛 初四 初五 初六 初七 初八 初九 初十
☀️ ㏧ ㏨ ㏩ ㏪ ㏫ ㏬ ㏭
🌛 十一 十二 十三 十四 十五 十六 十七
☀️ ㏮ ㏯ ㏰ ㏱ ㏲ ㏳ ㏴
🌛 十八 十九 二十 廿一 廿二 廿三 廿四
☀️ ㏵ ㏶ ㏷ ㏸ ㏹ ㏺ ㏻
🌛 廿五 廿六 廿七 廿八 廿九 三十 正月
☀️ ㏼ ㏽ ㏾
🌛 初二 初三 初四
小寒:5日 11ʰ55ᵐ44ˢ
大寒:20日 5ʰ23ᵐ36ˢ
📅 2月
日 一 二 三 四 五 六
☀️ ㏠ ㏡ ㏢ ㏣
🌛 初五 初六 初七 初八
☀️ ㏤ ㏥ ㏦ ㏧ ㏨ ㏩ ㏪
🌛 初九 初十 十一 十二 十三 十四 十五
☀️ ㏫ ㏬ ㏭ ㏮ ㏯ ㏰ ㏱
🌛 十六 十七 十八 十九 二十 廿一 廿二
☀️ ㏲ ㏳ ㏴ ㏵ ㏶ ㏷ ㏸
🌛 廿三 廿四 廿五 廿六 廿七 廿八 廿九
☀️ ㏹ ㏺ ㏻
🌛 二月 初二 初三
立春:3日 23ʰ34ᵐ3ˢ
雨水:18日 19ʰ31ᵐ19ˢ
📅 3月
日 一 二 三 四 五 六
☀️ ㏠ ㏡ ㏢ ㏣
🌛 初四 初五 初六 初七
☀️ ㏤ ㏥ ㏦ ㏧ ㏨ ㏩ ㏪
🌛 初八 初九 初十 十一 十二 十三 十四
☀️ ㏫ ㏬ ㏭ ㏮ ㏯ ㏰ ㏱
🌛 十五 十六 十七 十八 十九 二十 廿一
☀️ ㏲ ㏳ ㏴ ㏵ ㏶ ㏷ ㏸
🌛 廿二 廿三 廿四 廿五 廿六 廿七 廿八
☀️ ㏹ ㏺ ㏻ ㏼ ㏽ ㏾
🌛 廿九 三十 三月 初二 初三 初四
惊蛰:5日 17ʰ32ᵐ43ˢ
春分:20日 18ʰ28ᵐ38ˢ
📅 4月
日 一 二 三 四 五 六
☀️ ㏠
🌛 初五
☀️ ㏡ ㏢ ㏣ ㏤ ㏥ ㏦ ㏧
🌛 初六 初七 初八 初九 初十 十一 十二
☀️ ㏨ ㏩ ㏪ ㏫ ㏬ ㏭ ㏮
🌛 十三 十四 十五 十六 十七 十八 十九
☀️ ㏯ ㏰ ㏱ ㏲ ㏳ ㏴ ㏵
🌛 二十 廿一 廿二 廿三 廿四 廿五 廿六
☀️ ㏶ ㏷ ㏸ ㏹ ㏺ ㏻ ㏼
🌛 廿七 廿八 廿九 四月 初二 初三 初四
☀️ ㏽
🌛 初五
清明:4日 22ʰ17ᵐ19ˢ
谷雨:20日 5ʰ27ᵐ0ˢ
📅 5月
日 一 二 三 四 五 六
☀️ ㏠ ㏡ ㏢ ㏣ ㏤ ㏥
🌛 初六 初七 初八 初九 初十 十一
☀️ ㏦ ㏧ ㏨ ㏩ ㏪ ㏫ ㏬
🌛 十二 十三 十四 十五 十六 十七 十八
☀️ ㏭ ㏮ ㏯ ㏰ ㏱ ㏲ ㏳
🌛 十九 二十 廿一 廿二 廿三 廿四 廿五
☀️ ㏴ ㏵ ㏶ ㏷ ㏸ ㏹ ㏺
🌛 廿六 廿七 廿八 廿九 三十 五月 初二
☀️ ㏻ ㏼ ㏽ ㏾
🌛 初三 初四 初五 初六
立夏:5日 15ʰ31ᵐ2ˢ
小满:21日 4ʰ30ᵐ55ˢ
📅 6月
日 一 二 三 四 五 六
☀️ ㏠ ㏡ ㏢
🌛 初七 初八 初九
☀️ ㏣ ㏤ ㏥ ㏦ ㏧ ㏨ ㏩
🌛 初十 十一 十二 十三 十四 十五 十六
☀️ ㏪ ㏫ ㏬ ㏭ ㏮ ㏯ ㏰
🌛 十七 十八 十九 二十 廿一 廿二 廿三
☀️ ㏱ ㏲ ㏳ ㏴ ㏵ ㏶ ㏷
🌛 廿四 廿五 廿六 廿七 廿八 廿九 六月
☀️ ㏸ ㏹ ㏺ ㏻ ㏼ ㏽
🌛 初二 初三 初四 初五 初六 初七
芒种:5日 19ʰ36ᵐ36ˢ
夏至:21日 12ʰ24ᵐ8ˢ
📅 7月
日 一 二 三 四 五 六
☀️ ㏠
🌛 初八
☀️ ㏡ ㏢ ㏣ ㏤ ㏥ ㏦ ㏧
🌛 初九 初十 十一 十二 十三 十四 十五
☀️ ㏨ ㏩ ㏪ ㏫ ㏬ ㏭ ㏮
🌛 十六 十七 十八 十九 二十 廿一 廿二
☀️ ㏯ ㏰ ㏱ ㏲ ㏳ ㏴ ㏵
🌛 廿三 廿四 廿五 廿六 廿七 廿八 廿九
☀️ ㏶ ㏷ ㏸ ㏹ ㏺ ㏻ ㏼
🌛 六月® 初二 初三 初四 初五 初六 初七
☀️ ㏽ ㏾
🌛 初八 初九
小暑:7日 5ʰ50ᵐ41ˢ
大暑:22日 23ʰ15ᵐ21ˢ
📅 8月
日 一 二 三 四 五 六
☀️ ㏠ ㏡ ㏢ ㏣ ㏤
🌛 初十 十一 十二 十三 十四
☀️ ㏥ ㏦ ㏧ ㏨ ㏩ ㏪ ㏫
🌛 十五 十六 十七 十八 十九 二十 廿一
☀️ ㏬ ㏭ ㏮ ㏯ ㏰ ㏱ ㏲
🌛 廿二 廿三 廿四 廿五 廿六 廿七 廿八
☀️ ㏳ ㏴ ㏵ ㏶ ㏷ ㏸ ㏹
🌛 廿九 三十 七月 初二 初三 初四 初五
☀️ ㏺ ㏻ ㏼ ㏽ ㏾
🌛 初六 初七 初八 初九 初十
立秋:7日 15ʰ39ᵐ59ˢ
处暑:23日 6ʰ20ᵐ12ˢ
📅 9月
日 一 二 三 四 五 六
☀️ ㏠ ㏡
🌛 十一 十二
☀️ ㏢ ㏣ ㏤ ㏥ ㏦ ㏧ ㏨
🌛 十三 十四 十五 十六 十七 十八 十九
☀️ ㏩ ㏪ ㏫ ㏬ ㏭ ㏮ ㏯
🌛 二十 廿一 廿二 廿三 廿四 廿五 廿六
☀️ ㏰ ㏱ ㏲ ㏳ ㏴ ㏵ ㏶
🌛 廿七 廿八 廿九 八月 初二 初三 初四
☀️ ㏷ ㏸ ㏹ ㏺ ㏻ ㏼ ㏽
🌛 初五 初六 初七 初八 初九 初十 十一
白露:7日 18ʰ38ᵐ36ˢ
秋分:23日 4ʰ1ᵐ47ˢ
📅 10月
日 一 二 三 四 五 六
☀️ ㏠ ㏡ ㏢ ㏣ ㏤ ㏥ ㏦
🌛 十二 十三 十四 十五 十六 十七 十八
☀️ ㏧ ㏨ ㏩ ㏪ ㏫ ㏬ ㏭
🌛 十九 二十 廿一 廿二 廿三 廿四 廿五
☀️ ㏮ ㏯ ㏰ ㏱ ㏲ ㏳ ㏴
🌛 廿六 廿七 廿八 廿九 三十 九月 初二
☀️ ㏵ ㏶ ㏷ ㏸ ㏹ ㏺ ㏻
🌛 初三 初四 初五 初六 初七 初八 初九
☀️ ㏼ ㏽ ㏾
🌛 初十 十一 十二
寒露:8日 10ʰ22ᵐ7ˢ
霜降:23日 13ʰ26ᵐ40ˢ
📅 11月
日 一 二 三 四 五 六
☀️ ㏠ ㏡ ㏢ ㏣
🌛 十三 十四 十五 十六
☀️ ㏤ ㏥ ㏦ ㏧ ㏨ ㏩ ㏪
🌛 十七 十八 十九 二十 廿一 廿二 廿三
☀️ ㏫ ㏬ ㏭ ㏮ ㏯ ㏰ ㏱
🌛 廿四 廿五 廿六 廿七 廿八 廿九 十月
☀️ ㏲ ㏳ ㏴ ㏵ ㏶ ㏷ ㏸
🌛 初二 初三 初四 初五 初六 初七 初八
☀️ ㏹ ㏺ ㏻ ㏼ ㏽
🌛 初九 初十 十一 十二 十三
立冬:7日 13ʰ37ᵐ48ˢ
小雪:22日 11ʰ4ᵐ38ˢ
📅 12月
日 一 二 三 四 五 六
☀️ ㏠ ㏡
🌛 十四 十五
☀️ ㏢ ㏣ ㏤ ㏥ ㏦ ㏧ ㏨
🌛 十六 十七 十八 十九 二十 廿一 廿二
☀️ ㏩ ㏪ ㏫ ㏬ ㏭ ㏮ ㏯
🌛 廿三 廿四 廿五 廿六 廿七 廿八 廿九
☀️ ㏰ ㏱ ㏲ ㏳ ㏴ ㏵ ㏶
🌛 三十 冬月 初二 初三 初四 初五 初六
☀️ ㏷ ㏸ ㏹ ㏺ ㏻ ㏼ ㏽
🌛 初七 初八 初九 初十 十一 十二 十三
☀️ ㏾
🌛 十四
大雪:7日 6ʰ32ᵐ39ˢ
冬至:22日 27ᵐ56ˢ
9. 精度
推荐1654到未来200年间,精度较高,以下是与寿星天文历的相对误差,可作参考
年份 | 平均相差 | ΔT取值相差 | 忽略ΔT后相差 |
---|
1600 | ≈1m20s | 20s | ≈1m |
1700 | ≈5s | 1.8s | ≈3.2s |
1800 | ≈5s | 2.1s | ≈2.9s |
1900 | ≈2s | 1.2s | ≈0.8s |
2000 | ≈20-30s | 25s | ≈5s |
2100 | ≈2m30s | 0s | ≈2m30s |
2200 | ≈2m30s | 0s | ≈2m30s |
2300 | ≈8m | 0s | ≈8m |
2400 | ≈18m | 0s | ≈18m |
2500 | ≈30m | 0s | ≈30m |
2600 | ≈45m | 0s | ≈45m |
2700 | ≈1h5m | 0s | ≈1h5m |