I recently encountered the problem of converting the lunar calendar when dealing with work tasks.
The lunar calendar is our country’s current traditional calendar. It is based on the changing cycle of the moon phase. Each lunar phase changes to one month, with reference to the solar return year as the length of one year, and adds twenty-four solar terms and sets leap months to make the average calendar year and tropical year adapt [1] .
For us to process data, we do not need to study the conversion relationship between the lunar calendar and the Gregorian calendar in detail. In Python, the ZhDate library supports lunar calendar-Gregorian calendar conversion, date addition and subtraction, and full Chinese date generation. It has built-in lunar calendar data from 1900 to 2100 and only relies on Python built-in modules. github.com/CutePandaSh/zhdate
Since ZhDate is a third-party open source module of Python, it requires additional installation and import before it can be used. Directly enter the following command in the command line window:
pip install zhdate
zhdate library, directly calculate the Chinese lunar calendar locally without a network interface, and supports the conversion of the lunar calendar to the solar calendar [2].
Enter the following command in the interactive environment:
from zhdate import ZhDate date1 = ZhDate(2022, 2, 2)# 新建农历 2022年二月初二(龙抬头)的日期对象 print(date1)# 直接返回农历日期字符串d
Output:
农历2022年2月2日
Enter in the interactive environment The following command:
t_date1 = date1.to_datetime() t_date1
Output:
datetime.datetime(2022, 3, 4, 0, 0)
Enter the following command in the interactive environment:
from datetime import datetime dt_date2 = datetime(2022, 2, 6) date2 = ZhDate.from_datetime(dt_date2)# 从阳历日期转换成农历日期对象 date2
Output:
<span style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">农历2022年1月6日</span><br>
Enter the following command in the interactive environment:
date3 = ZhDate(2020, 4, 15)# 新建农历 2020年4月15日 print(date3.to_datetime())
Output:
2020-05-07 00:00:00
date3 = ZhDate(2020, 4, 15)# 新建农历 2020年闰4月15日 print(date3.to_datetime())
2020-06-06 00:00:00
dt_date4 = datetime(2022, 3, 4) date4 = ZhDate.from_datetime(dt_date4) print(date4.chinese())
二零二二年二月初二 壬寅年 (虎年)
ZhDate.today()
农历2022年2月7日
today = datetime.now() data_str = today.strftime('%Y-%m-%d') data_str
'2022-03-09'
oneDay = datetime(2022, 5, 1) difference = oneDay.toordinal()-today.toordinal() print(f'今天 {data_str} 距离五一劳动节还有 {difference} 天')
今天 2022-03-09 距离五一劳动节还有 53 天
oneDay = ZhDate(2022, 8, 15).to_datetime() difference = oneDay.toordinal()-today.toordinal() print(f'今天 {data_str} 距离中秋节还有 {difference} 天')
今天 2022-03-09 距离中秋节还有 185 天
The above is the detailed content of Python can actually calculate the lunar calendar!. For more information, please follow other related articles on the PHP Chinese website!