说明:
PyPI 上有个 sxtwl ,可以进行农历和公历的转换,还能返回星期、生肖和天干地支,但是描述稍微有点凌乱。我整理了一下。
另外: sxtwl的生肖计算是按公历的1月1日计算的,正确的应该是以立春分割。立春日是公历的2月3 -5日,所以我单独写了个算法,以2月4日为界限计算生肖。
如何使用
1. 先安装 sxtwl
pip install sxtwl
2. 功能演示
-
import sxtwl
-
-
lunar = sxtwl.Lunar()
-
#下面可以使用lunar做些日历的操作
-
-
-
# 使用前需要添加索引
-
# 这个索引的内容可以自己定义,比如把简体字改成繁体字,或者把生肖的鼠改成老鼠。。。
-
Gan = ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"]
-
Zhi = ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"]
-
ShX = ["鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"]
-
numCn = ["日", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"]
-
jqmc = ["冬至", "小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑","白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪"]
-
ymc = ["十一", "十二", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十" ]
-
rmc = ["初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十", "卅一"]
-
-
-
#需要定义一个day,这个day就是你要查询的时间,这个时间可以是阳历也可以是阴历。
-
-
#通过阳历获取日期信息 (这里的信息有,阴历,阳历,二十四节气,天干地支,星期几等)
-
day = lunar.getDayBySolar(2020, 5, 24) # 查询2020年05月24日
-
-
#通过阴历获取日期信息 (这里的信息有,阴历,阳历,二十四节气,天干地支,星期几等)
-
#True 代表当前月份是闰月的月份,False 代表当前月份不是闰月
-
day = lunar.getDayByLunar(2020, 4, 2 , False) # 查询的日期是2020年四月初二(非闰月)
-
-
# 后面就用这个day 来获取自己需要的信息
-
-
-
# 各个参数获取
-
-
day.y #公历年
-
day.m #公历月
-
day.d #公历日
-
-
ymc[day.Lmc] # 阴历月
-
rmc[day.Ldi] # 阴历日
-
day.Lleap # True 代表当然月是闰月,False 代表当前月不是闰月
-
-
numCn[day.week] # 星期
-
-
sxtwl.J2000 + day.d0 # 儒略日,是以公元前4712年1月1日为历元,[史家为公元前4713年1月1日],是一个独立的连续不间断的记日长尺,主要是天文学家在使用
-
-
Gan[day.Lyear2.tg] # 天干年
-
Zhi[day.Lyear2.dz] # 地支年
-
Gan[day.Lmonth2.tg] # 天干月
-
Zhi[day.Lmonth2.dz] # 地支月
-
Gan[day.Lday2.tg] #天干日
-
Zhi[day.Lday2.dz] #地支日
-
day.cur_dz #距冬至的天数
-
day.cur_xz #距夏至的天数
-
day.cur_lq #距立秋的天数
-
day.cur_mz #距芒种的天数
-
day.cur_xs #距小暑的天数
-
-
# 使用举例
-
print("公历:", day.y, "年", day.m, "月", day.d, "日") #结果 公历: 2020 年 5 月 24 日
-
-
if day.Lleap:
-
print("润", ymc[day.Lmc], "月", rmc[day.Ldi], "日")
-
else:
-
print(ymc[day.Lmc], "月", rmc[day.Ldi], "日")
-
-
print("儒略日:JD", sxtwl.J2000 + day.d0)
-
print("星期", numCn[day.week])
-
-
print(Gan[day.Lyear2.tg], Zhi[day.Lyear2.dz], "年", Gan[day.Lmonth2.tg], Zhi[day.Lmonth2.dz], "月",Gan[day.Lday2.tg], Zhi[day.Lday2.dz], "日")
-
-
print("距冬至", day.cur_dz, "天")
-
print("距夏至", day.cur_xz, "天")
-
print("距立秋", day.cur_lq, "天")
-
print("距芒种", day.cur_mz, "天")
-
print("距小暑", day.cur_xs, "天")
计算生肖:
if day.m==2:
if day.d <=3:
ShengXiao = ShX[(day.y - 5)%12]
else:
ShengXiao = ShX[(day.y - 4)%12]
elif day.m==1:
ShengXiao = ShX[(day.y - 5)%12]
else:
ShengXiao = ShX[(day.y - 4)%12]
阅读(4471) | 评论(0) | 转发(0) |