Home > Article > Backend Development > Python can actually calculate the lunar calendar!
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##Enter the following command in the interactive environment:
date3 = ZhDate(2020, 4, 15)# 新建农历 2020年闰4月15日 print(date3.to_datetime())Output:
2020-06-06 00:00:00Students who fall on April 15th in the lunar calendar this year can have two lunar birthdays on May 7th and June 6th respectively. OthersChinese output, enter the following command in the interactive environment:
dt_date4 = datetime(2022, 3, 4) date4 = ZhDate.from_datetime(dt_date4) print(date4.chinese())Output:
二零二二年二月初二 壬寅年 (虎年)The lunar date of the day, in the interactive environment Enter the following command in:
ZhDate.today()Output:
农历2022年2月7日In addition, the zhdate module also supports addition and subtraction. Subtracting two zhdate objects can get the difference between the two lunar calendar dates, and adding an integer can also return a new lunar calendar object that is the number of days apart. Practical combat: Calculate the number of days between holidays Let’s practice this zhdate module through a practical project. Join us Want to quickly know how many days are left until a certain holiday today? You can use zhdate and datetime libraries to solve this problem. Enter the following command in the interactive environment:
today = datetime.now() data_str = today.strftime('%Y-%m-%d') data_strOutput:
'2022-03-09'Calculate the number of days until Labor Day, in the interactive Enter the following command in the environment:
oneDay = datetime(2022, 5, 1) difference = oneDay.toordinal()-today.toordinal() print(f'今天 {data_str} 距离五一劳动节还有 {difference} 天')Output:
今天 2022-03-09 距离五一劳动节还有 53 天To calculate the number of days until the Mid-Autumn Festival, enter the following command in the interactive environment:
oneDay = ZhDate(2022, 8, 15).to_datetime() difference = oneDay.toordinal()-today.toordinal() print(f'今天 {data_str} 距离中秋节还有 {difference} 天')Output:
今天 2022-03-09 距离中秋节还有 185 天If you have time, you can give it a try and test how many days are left until other festivals? In actual combat, you should pay attention to whether the festival is set according to the Gregorian calendar or the lunar calendar.
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!