最近處理工作任務的時候遇到了轉換農曆的問題。
農曆,是我國現行的傳統曆法。它是根據月相的變化週期,每一次月相朔望變化為一個月,參考太陽回歸年為一年的長度,並加入二十四節氣與設定閏月以使平均歷年與回歸年相適應[1] 。
對於我們處理資料來說,並不需要去詳細研究農曆與公曆之間的轉換關係。在Python中,ZhDate庫支援農曆-公曆互相轉換、日期加減以及全中文日期生成,內建了1900-2100年的農曆數據,僅依賴Python內建模組。 github.com/CutePandaSh/zhdate
由於ZhDate屬於Python的第三⽅開源模組,因此需要額外安裝、導⼊後,才能使⽤。直接在指令⾏窗⼝中輸⼊如下指令:
pip install zhdate
zhdate函式庫,不用網路介面直接本地計算中國農曆,支援農曆陽曆互轉[2]。
在互動式環境中輸入以下命令:
from zhdate import ZhDate date1 = ZhDate(2022, 2, 2)# 新建农历 2022年二月初二(龙抬头)的日期对象 print(date1)# 直接返回农历日期字符串d
輸出:
农历2022年2月2日
在互動式環境中輸入如下指令:
t_date1 = date1.to_datetime() t_date1
輸出:
datetime.datetime(2022, 3, 4, 0, 0)
在互動式環境中輸入以下指令:
from datetime import datetime dt_date2 = datetime(2022, 2, 6) date2 = ZhDate.from_datetime(dt_date2)# 从阳历日期转换成农历日期对象 date2
輸出:
<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>
在互動式環境中輸入以下指令:
date3 = ZhDate(2020, 4, 15)# 新建农历 2020年4月15日 print(date3.to_datetime())
輸出:
2020-05-07 00:00:00
#在互動式環境中輸入以下指令:
date3 = ZhDate(2020, 4, 15)# 新建农历 2020年闰4月15日 print(date3.to_datetime())
輸出:
2020-06-06 00:00:00
這一年農曆4月15日的同學,可以分別在5月7日和6月6日分別過兩次農曆生日。
中文輸出,在互動式環境中輸入以下指令:
dt_date4 = datetime(2022, 3, 4) date4 = ZhDate.from_datetime(dt_date4) print(date4.chinese())
輸出:
二零二二年二月初二 壬寅年 (虎年)
當天的農曆日期,在互動式環境中輸入如下指令:
ZhDate.today()
輸出:
农历2022年2月7日
此外,zhdate模組也支援加減法。兩個zhdate物件相減可以得到兩個農曆日期的差額,同時加整數也可以傳回相隔天數以後的新農曆物件。
下面透過一個實戰項目練習這個zhdate模組。
加入我們想快速地了解今天距離某個節日還有多少天?可以使用zhdate和datetime庫搭配來解決這個問題。
在互動式環境中輸入以下指令:
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 天
大家有時間也可以動手試一試,測試一下還要距離其他節日幾天?實戰時要注意該節日是依照公曆統計還是農曆設定的。
以上是Python竟然還可以計算農曆!的詳細內容。更多資訊請關注PHP中文網其他相關文章!