日期工具库
Borax.Calendars 提供了一系列适用于常见场景的工具方法。这些方法都定义在 borax.calendars.SCalendars
(公历相关)和 borax.calendars.LCalendars
(农历相关)类中。
公历工具SCalendars
Add in v3.4.0
SCalendars.get_last_day_of_this_month(year: int, month: int) -> date
返回year年month月的最后一天日期。
SCalendars.get_fist_day_of_year_week(year: int, week: int) -> date
返回year年第week个星期第一天的日期。
三伏数九天 - ThreeNineUtils
Add in v3.5.1
三伏天的描述如下:
我国传统的推算方法规定,夏至以后的第3个庚日、第4个庚日分别为初伏(头伏)和中伏的开始日期,立秋以后的第一个庚日为末伏的第一天。因为每个庚日之间相隔10天,所以初伏、末伏规定的时间是10天。又因为每年夏至节气后的第3个庚日(初伏)出现的迟早不同,中伏的天数就有长有短,可能是10天,也可能是20天。
数九的描述如下:
从冬天的冬至算起(冬至即一九第1天),每九天为一"九",第一个九天叫做"一九",第二个九天叫"二九",依此类推,数到"九九"八十一天。
API
ThreeNineUtils
类提供了有关三伏数九的计算函数。
- ThreeNineUtils.get_39label(date_obj: Union[date, LunarDate]) -> str
返回某一个日期的相关标签,该标签格式为“初伏/中伏/末伏/一九/二九/.../八九/九九第x天”。如果不是,则返回空字符串。
from datetime import date
from borax.calendars.utils import ThreeNineUtils
print(ThreeNineUtils.get_39label(date(2021, 7, 21))) # '中伏第1天'
- ThreeNineUtils.get_39days(year: int) -> Dict[str, date]
返回某一个公历年份的三伏数九天起始日期的全部信息,如 ThreeNineUtils.get_39days(2021)
的返回值如下:
{'一九': datetime.date(2021, 12, 21),
'七九': datetime.date(2022, 2, 13),
'三九': datetime.date(2022, 1, 8),
'中伏': datetime.date(2021, 7, 21),
'九九': datetime.date(2022, 3, 3),
'二九': datetime.date(2021, 12, 30),
'五九': datetime.date(2022, 1, 26),
'八九': datetime.date(2022, 2, 22),
'六九': datetime.date(2022, 2, 4),
'初伏': datetime.date(2021, 7, 11),
'四九': datetime.date(2022, 1, 17),
'末伏': datetime.date(2021, 8, 20)}