python+lunarcalendar庫(kù)實(shí)現(xiàn)使用農(nóng)歷日期
農(nóng)歷日期庫(kù)
介紹
lunarcalendar是一個(gè)處理農(nóng)歷日期的庫(kù)
可以簡(jiǎn)單通過(guò)pip安裝:pip install lunarcalendar
從公歷轉(zhuǎn)為農(nóng)歷
from lunarcalendar import Converter, Solar solar = Solar(2024, 11, 1) lunar = Converter.Solar2Lunar(solar) print(lunar) print(lunar.year) # 農(nóng)歷年 print(lunar.month) # 農(nóng)歷月 print(lunar.day) # 農(nóng)歷日 print(lunar.isleap) # 是否閏月
從農(nóng)歷轉(zhuǎn)為公歷
from lunarcalendar import Converter, Lunar lunar = Lunar(2025, 2, 2, isleap=False) solar = Converter.Lunar2Solar(lunar) print(solar) print(solar.year) # 公歷年 print(solar.month) # 公歷月 print(solar.day) # 公歷日 print(solar.to_date()) # 公歷日期
節(jié)日與節(jié)氣
遍歷某年全部節(jié)日
from lunarcalendar.festival import festivals for fest in festivals: print(fest.get_lang("zh"), fest(2025))
遍歷某年全部的節(jié)氣
from lunarcalendar.solarterm import solarterms for st in solarterms: print(st.get_lang("zh"), st(2025))
在這種情況下,就可以很容易的根據(jù)節(jié)日/節(jié)氣名,找到對(duì)應(yīng)的節(jié)日,如
from lunarcalendar.festival import festivals for fest in festivals: if fest.get_lang("zh") == "春節(jié)": for year in range(2025, 2036): print(f"{year}年的春節(jié)在:{fest(year)}")
這樣,我們就可以輕松的看到每一年的春節(jié)都在什么時(shí)候了。
lunar-find
搜索節(jié)日與節(jié)氣
安裝lunarcalendar以后,同時(shí)會(huì)獲得一個(gè)lunar-find工具,該工具可以搜索節(jié)日與節(jié)氣,可以在不需要額外編寫代碼的情況下,查詢到節(jié)日與節(jié)氣。
如lunar-find 春節(jié),將顯示:春節(jié) on 2024: 2024-02-10
當(dāng)然,2024年春節(jié)早就過(guò)完了,顯示2024年春節(jié)沒(méi)有什么意義,我想要看2025年春節(jié)怎么辦呢?
只需要簡(jiǎn)單的添加年份即可,如lunar-find 春節(jié) 2025,將顯示:春節(jié) on 2025: 2025-01-29
那么,一些與陰歷無(wú)關(guān)的節(jié)日,如情人節(jié),兒童節(jié),包括一些節(jié)氣,立春,冬至,同樣也可以輕松得到結(jié)果。
搜索全部節(jié)日
搜索全部:lunar-find all
搜索全部節(jié)日:lunar-find festival
搜索全部節(jié)日(使用中文):lunar-find 節(jié)日
搜索全部節(jié)氣:lunar-find solarterm
搜索全部節(jié)氣(使用中文):lunar-find 節(jié)氣
當(dāng)我們使用:lunar-find festival 2025,就能夠得到以下結(jié)果:
> 元旦 on 2025: 2025-01-01
> 臘八節(jié) on 2025: 2025-01-07
> 小年 on 2025: 2025-01-22
> 除夕 on 2025: 2025-01-28
> 春節(jié) on 2025: 2025-01-29
> 破五節(jié) on 2025: 2025-02-02
> 元宵節(jié) on 2025: 2025-02-12
> 情人節(jié) on 2025: 2025-02-14
> 龍?zhí)ь^ on 2025: 2025-03-01
> 婦女節(jié) on 2025: 2025-03-08
> 植樹節(jié) on 2025: 2025-03-12
> 清明節(jié) on 2025: 2025-04-04
> 復(fù)活節(jié) on 2025: 2025-04-20
> 勞動(dòng)節(jié) on 2025: 2025-05-01
> 青年節(jié) on 2025: 2025-05-04
> 母親節(jié) on 2025: 2025-05-11
> 護(hù)士節(jié) on 2025: 2025-05-12
> 端午節(jié) on 2025: 2025-05-31
> 兒童節(jié) on 2025: 2025-06-01
> 父親節(jié) on 2025: 2025-06-15
> 七夕節(jié) on 2025: 2025-08-29
> 中元節(jié) on 2025: 2025-09-06
> 教師節(jié) on 2025: 2025-09-10
> 國(guó)慶節(jié) on 2025: 2025-10-01
> 中秋節(jié) on 2025: 2025-10-06
> 重陽(yáng)節(jié) on 2025: 2025-10-29
> 萬(wàn)圣夜 on 2025: 2025-10-31
> 寒衣節(jié) on 2025: 2025-11-20
> 感恩節(jié) on 2025: 2025-11-27
> 冬節(jié) on 2025: 2025-12-21
> 平安夜 on 2025: 2025-12-24
> 圣誕節(jié) on 2025: 2025-12-25
農(nóng)歷日期格式化
農(nóng)歷日期格式類
通常情況下,我們描述農(nóng)歷日期的時(shí)候,會(huì)說(shuō)“正月初一”,“八月十五”,因此,我們還需要一種方法,將農(nóng)歷的數(shù)字日期對(duì)應(yīng)到我們常說(shuō)的日期,以實(shí)現(xiàn)如日歷等功能。
from lunarcalendar import Converter, Solar class LunarStr: months = ["正月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"] days = ["初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十"] @classmethod def from_year_month_day(cls, year, month, day): solar = Solar(year, month, day) lunar = Converter.Solar2Lunar(solar) return cls(lunar) def __repr__(self): return f"LunarStr(year={self.year}, month={self.month}, day={self.day})" def __init__(self, lunar): self.year = lunar.year self.month = lunar.month self.day = lunar.day try: self.month_str = self.months[lunar.month - 1] self.day_str = self.days[lunar.day - 1] except IndexError: raise ValueError("月份或日期超出有效范圍!") if lunar.isleap: self.month_str = "閏" + self.month_str def get_calendar_date_str(self): if self.day == 1: return self.month_str else: return self.day_str def get_date_str(self): return self.month_str + self.day_str
使用方法
我們可以通過(guò)創(chuàng)建一個(gè)農(nóng)歷日期,然后得到對(duì)應(yīng)的農(nóng)歷日期表達(dá)方式。
from lunarcalendar import Converter, Solar solar = Solar(2024, 11, 1) lunar = Converter.Solar2Lunar(solar) date_str = LunarStr(lunar).get_date_str() print(date_str)
也可以直接使用年月日,來(lái)直接得到農(nóng)歷日期的常用表達(dá)方式。
date_str = LunarStr.from_year_month_day(2024, 11, 1).get_date_str() print(date_str)
到此這篇關(guān)于python+lunarcalendar庫(kù)實(shí)現(xiàn)使用農(nóng)歷日期的文章就介紹到這了,更多相關(guān)python lunarcalendar農(nóng)歷日期內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pandas 時(shí)間格式轉(zhuǎn)換的實(shí)現(xiàn)
這篇文章主要介紹了pandas 時(shí)間格式轉(zhuǎn)換的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07python+selenium 簡(jiǎn)易地疫情信息自動(dòng)打卡簽到功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了python+selenium 簡(jiǎn)易地疫情信息自動(dòng)打卡簽到功能的實(shí)現(xiàn)代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08python使用Plotly創(chuàng)建交互式數(shù)據(jù)可視化的操作步驟
Python 的 Plotly 庫(kù)是創(chuàng)建這種交互式可視化的強(qiáng)大工具,它提供了豐富的圖表類型和易于使用的接口,本文將探討如何使用 Plotly 創(chuàng)建交互式數(shù)據(jù)可視化,包括代碼實(shí)例和深入的解釋,需要的朋友可以參考下2024-08-08python GUI庫(kù)圖形界面開發(fā)之PyQt5多線程中信號(hào)與槽的詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫(kù)圖形界面開發(fā)之PyQt5多線程中信號(hào)與槽的詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-03-03Python中對(duì)元組和列表按條件進(jìn)行排序的方法示例
這篇文章主要介紹了Python中對(duì)元組和列表按條件進(jìn)行排序的方法示例,需要的朋友可以參考下2015-11-11Python中常見(jiàn)的三種字符串格式化輸出方法小結(jié)
字符串格式化是編程中一個(gè)常見(jiàn)的需求,它可以們將不同類型的數(shù)據(jù)插入到字符串中,在?Python?中,有多種方法可以執(zhí)行字符串格式化,本文為大家介紹了常見(jiàn)的三種方法,希望對(duì)大家有所幫助2024-02-02基于Python第三方插件實(shí)現(xiàn)西游記章節(jié)標(biāo)注漢語(yǔ)拼音的方法
這篇文章主要介紹了基于Python第三方插件實(shí)現(xiàn)西游記章節(jié)標(biāo)注漢語(yǔ)拼音的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05