Python can actually calculate the lunar calendar!

PHPz
Release: 2023-04-30 09:43:06
forward
1200 people have browsed it

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
Copy after login

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
Copy after login

Output:

农历2022年2月2日
Copy after login

Enter in the interactive environment The following command:

t_date1 = date1.to_datetime()
t_date1
Copy after login

Output:

datetime.datetime(2022, 3, 4, 0, 0)
Copy after login

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
Copy after login

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>
Copy after login

Leap month

Enter the following command in the interactive environment:

date3 = ZhDate(2020, 4, 15)# 新建农历 2020年4月15日
print(date3.to_datetime())
Copy after login

Output:

2020-05-07 00:00:00
Copy after login

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())
Copy after login

Output:

2020-06-06 00:00:00
Copy after login

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())
Copy after login

Output:

二零二二年二月初二 壬寅年 (虎年)
Copy after login

The lunar date of the day, in the interactive environment Enter the following command in:

ZhDate.today()
Copy after login

Output:

农历2022年2月7日
Copy after login

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
Copy after login

Output:

'2022-03-09'
Copy after login

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} 天')
Copy after login

Output:

今天 2022-03-09 距离五一劳动节还有 53 天
Copy after login

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} 天')
Copy after login

Output:

今天 2022-03-09 距离中秋节还有 185 天
Copy after login
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!

Related labels:
source:51cto.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template