v3.5.6发布日志
发布日期:2022年7月3日
概述
v3.5.6是一个引入若干个特性的版本,这些特性不会对已有逻辑进行破坏性更新。主要包含:
- 新增
LunarDate.strptime
反向解析函数 LunarDate
农历日期新增格式化修饰符%c
WrappedDate
新增simple_str
简化显示方法。如:“2022年5月7日(四月初七)” 。- 星期型节日
WeekFestival
新增倒数序号和每月频率 FestivalLibrary
功能增强- 新增新的节日库
ext1
1 农历
日期反向解析 strptime
从文本字符串解析农历日期 LunarDate
对象。
from borax.calendars.lunardate import LunarDate
ld = LunarDate.strptime('二〇二二年四月初三', '%Y年%L%M月%D')
print(ld) # LunarDate(2022, 4, 3, 0)
新的格式化修饰符:%c
新的修饰符 %c
显示中文月日信息,不显示年份信息,等效于 %L%N月%D
。
from borax.calendars.lunardate import LunarDate
print(LunarDate(2022, 4, 3).strftime('%c')) # '四月初三'
print(LunarDate(2020, 4, 22).strftime('%c')) # '闰四月廿二'
该修饰符通常用于和公历日期同时显示的场景,在该种场景下,农历年份总是很容易推导。
from borax.calendars.festivals2 import WrappedDate
wd = WrappedDate(LunarDate(2022, 3, 4))
print(f'{wd.solar}({wd.lunar:%c})') # '2022-04-04(三月初四)'
干支工具
新增干支序号和干支文字的转化。
0 甲子
1 乙丑
...
59 癸亥
>>>TextUtils.offset2gz(0)
"甲子"
>>>TextUtils.gz2offset("癸亥")
59
>>>TextUtils.gz2offset("甲丑")
ValueError("Invalid gz string:甲丑.")
2 星期型节日
序号支持倒数
使用场景:国际麻风节
# 每年1月的最后一个星期日
mafeng = WeekFestival(month=1, index=-1, week=calendar.SUNDAY, name='国际麻风节')
206036 父亲节 6月第3个星期日
201116 国际麻风节 1月第倒数第1个星期日(week=6)
支持每月属性
允许 WeekFestival
中 month 取值为0,表示“每月”频率。
last_sunday_monthly = WeekFestival(month=0, index=-1, week=calendar.SUNDAY)
综合示例
WeekFestival
支持以下的定义方式:
fs2 = WeekFestival(month=4, index=1, week=calendar.SUMDAY) # 每年4月第1个星期日
fs3 = WeekFestival(month=0, index=1, week=calendar.SUMDAY) # 每月第1个星期日
fs4 = WeekFestival(freq=FreqConst.MONTHLY, index=1, week=calendar.SUNDAY) # 每月第1个星期日
fs5 = WeekFestival(feq=FreqConst.MONTHLY, index=-1, week=calendar.SUNDAY) # 每月最后一个星期日
3 节气型节日
新增支持基于节气的某些节日。“初伏”为“夏至起的第三个庚日”,可定义为:
tf = TermFestival('夏至', nth=3, day_gz='庚')
类似的节日有:三伏天、九九天、入梅、出梅。
4 节日属性Festival
新增分类属性
新增 Festival.catalog
属性,显示节日对象的分类属性。可用的属性值包括:
属性 | 描述 |
---|---|
life | 诞辰逝世纪念日 |
event | 事件纪念日,机构成立日 |
other | 其他型节日 |
public | 公共节日 |
tradition | 传统节日 |
导出csv文件
使用 to_csv
函数可以导出到文件。
fl = FestivalLibrary.load_builtin()
fl.to_csv('my_festivals.csv')
5 内置数据库
新的节日库 ext1 包含了许多国际、行业性节日,数目在360+,使用下列代码加载。
fl = FestivalLibrary.load_builtin('ext1')
示例数据
001010,元旦,public
001100,中国人民警察节,public
001260,国际海关日,public
...
206025,文化和自然遗产日,public
207015,国际合作节,public
209025,世界急救日,public