利用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