Home >Backend Development >Python Tutorial >Python can actually calculate the lunar calendar!

Python can actually calculate the lunar calendar!

PHPz
PHPzforward
2023-04-30 09:43:061231browse

Python can actually calculate the lunar calendar!

I recently encountered the problem of converting the lunar calendar when dealing with work tasks.

Python can actually calculate the lunar calendar!

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

Detailed usage

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].

Conversion between solar calendar and lunar calendar dates

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>

Leap month

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

Python can actually calculate the lunar calendar!

##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:00

Students who fall on April 15th in the lunar calendar this year can have two lunar birthdays on May 7th and June 6th respectively.

Others

Chinese 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.

Python can actually calculate the lunar calendar!

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.

Python can actually calculate the lunar calendar!

Enter the following command in the interactive environment:

today = datetime.now()
data_str = today.strftime('%Y-%m-%d')
data_str

Output:

'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 天

Python can actually calculate the lunar calendar!

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!

Statement:
This article is reproduced at:51cto.com. If there is any infringement, please contact admin@php.cn delete