最近处理工作任务的竟然计算时候遇到了转换农历的问题。 农历,农历是竟然计算我国现行的传统历法。它是农历根据月相的变化周期,每一次月相朔望变化为一个月,竟然计算参考太阳回归年为一年的农历长度,并加入二十四节气与设置闰月以使平均历年与回归年相适应[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 输出: 农历2022年1月6日 在交互式环境中输入如下命令: 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()) 输出: 二零二二年二月初二 壬寅年 (虎年) 当天的农历日期,云南idc服务商在交互式环境中输入如下命令: 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 天 大家有时间也可以动手试一试,测试一下还距离其他节日多少天?实战时要注意该节日是按照公历统计还是农历设置的。详细使用方法
实战:计算节日距离天数