利用Python计算农历日期
今天在“俊红的数据分析之路”公众号看到一篇计算农历日期的文章,于是跟着练习一下。运行环境:
- PyCharm 2020.1
- macOS Monterey Version 12.3.1
- Python 3.9.9
- Jupyter notebook
现整理成文分享如下:
首先安装第三方开源模块,在命令行输入如下命令:
pip install zhdate
使用方法:
1.1 阳历与农历日期的转换
在交互式环境输入如下命令:
from datetime import ZhDate
# 新建农历2022年二月初四的日期对象
lunar_date = ZhDate(2022, 2, 4)
# 输出农历日期的字符串
print(lunar_date)
结果如下:
农历2022年2月4日
在交互式环境输入如下命令:
t_date1 = lunar_date.to_datetime() # 从农历日期转换为阳历日期
t_date1
结果如下:
Out[22]: datetime.datetime(2022, 3, 6, 0, 0)
在交互式环境中输入如下命令:
from datetime import datetime
solar_date = datetime(2022, 4, 4)
solar_to_lunar_date = ZhDate.from_datetime(solar_date) # 从阳历日期转换为农历日期
print(solar_to_lunar_date)
结果如下:
农历2022年3月4日
1.2 闰月
在交互式环境中输入如下命令:
# 新建农历 2020年4月15日
unar_date1 = ZhDate(2020, 4, 15)
print(lunar_date1.to_datetime())
结果如下:
2020-05-07 00:00:00
1.3 其他
中文输出, Jupyter notebook下输入如下命令:
# 中文输出
from zhdate import ZhDate
from datetime import datetime
solar_date = datetime(2022, 4, 1) # 新建一个阳历日期
solar_to_lunar_date = ZhDate.from_datetime(solar_date) # 阳历日期转换农历日期
print(solar_to_lunar_date.chinese()) # 输出中文农历日期
结果如下:
二零二二年三月初一 壬寅年 (虎年)
当天的农历日期, 输入如下命令:
lunar_today = ZhDate.today()
print(lunar_today)
结果如下:
农历2022年3月4日
案例:计算节日距离天数
距离“五一”劳动节还有多少天,输入如下命令:
from datetime import datetime
today = datetime.now() # 今天的日期
today_str = today.strftime('%Y-%m-%d') # 设定日期格式年月日
May_1st = datetime(2022, 5, 1) # 五一劳动节
dural_days = May_1st.toordinal() - today.toordinal()
print(f'今天是{today_str}距离五一劳动节还有{dural_days}天')
结果如下:
今天是2022-04-04距离五一劳动节还有27天
根据农历日期,计算距离端午节还有多少天,结合zhdate库,代码如下:
# 计算农历节日还有多少天
from datetime import datetime
from zhdate import ZhDate
today = datetime.now() # 今天的日期
today_str = today.strftime('%Y-%m-%d') # 设定日期格式年月日
dragon_boat_Day = ZhDate(2022, 5, 5).to_datetime() #转换成阳历日期
dural_days = dragon_boat_Day.toordinal() - today.toordinal()
print(f'今天是{today_str}距离端午节还有{dural_days}天')
结果如下:
今天是2022-04-04距离端午节还有60天
距离中秋节还有多少天,代码如下:
middle_autumn_Day = ZhDate(2022, 8, 15).to_datetime() #转换成阳历日期
dural_days = middle_autumn_Day.toordinal() - today.toordinal()
print(f'今天是{today_str}距离中秋节还有{dural_days}天')
结果如下:
今天是2022-04-04距离中秋节还有159天
参考资料:【1】百度百科-农历 【2】github