简介
zhdate模块统计从1900年到2100年的农历月份数据代码,支持农历和公历之间的转化,并且支持日期差额运算。
安装
1
|
pip install zhdate |
主要功能
1、获取公历对应的农历日期
2、获取中文描述农历日期
3、计算公历距离农历差额
获取公历对应的农历日期:格式ZhDate.from_datetime(datetime(year, month, day))
1
2
|
print (ZhDate.from_datetime(datetime( 2022 , 3 , 27 ))) # 农历2022年2月25日 |
获取中文描述农历日期:需对结果调用chinese()方法
格式ZhDate.from_datetime(datetime(year, month, day)).chinese()
1
2
|
print (ZhDate.from_datetime(datetime( 2022 , 3 , 27 )).chinese()) # 二零二二年二月二十五 壬寅年 (虎年) |
计算公历距离农历差额:
格式:difference = lc_day.toordinal() - gc_day.toordinal()
源码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
# -*- coding:utf-8 -*- from zhdate import ZhDate from datetime import datetime def get_chinese_traditional_calendar(date = None ): """ :param date: none = now day. :return: """ if date: year, month, day = int (date[: 4 ]), int (date[ 4 : 6 ]), int (date[ 6 :]) else : now = str (datetime.now().strftime( '%Y-%m-%d' )).split( "-" ) year, month, day = int (now[ 0 ]), int (now[ 1 ]), int (now[ 2 ]) return ZhDate.from_datetime(datetime(year, month, day)) def get_difference_days(date1, date2 = None ): """ :param date1: :param date2: none = now day :return: """ if date2: year1, month1, day1 = int (date1[: 4 ]), int (date1[ 4 : 6 ]), int (date1[ 6 :]) year2, month2, day2 = int (date2[: 4 ]), int (date2[ 4 : 6 ]), int (date2[ 6 :]) else : now = str (datetime.now().strftime( '%Y-%m-%d' )).split( "-" ) year1, month1, day1 = int (date1[: 4 ]), int (date1[ 4 : 6 ]), int (date1[ 6 :]) year2, month2, day2 = int (now[ 0 ]), int (now[ 1 ]), int (now[ 2 ]) date2 = f "{year2}{month2}{day2}" one_day = datetime(year2, month2, day2) other_day = datetime(year1, month1, day1) difference = abs (one_day.toordinal() - other_day.toordinal()) print (f '{date1} 距离 {date2} 相差 {difference} 天' ) return difference def get_difference_chinese_calendar(gc_date, lc_date): """ :param gc_date: the gregorian calendar 公历 :param lc_day: the lunar calendar 农历 :return: """ year1, month1, day1 = int (gc_date[: 4 ]), int (gc_date[ 4 : 6 ]), int (gc_date[ 6 :]) year2, month2, day2 = int (lc_date[: 4 ]), int (lc_date[ 4 : 6 ]), int (lc_date[ 6 :]) gc_day = datetime(year1, month1, day1) lc_day = ZhDate(year2, month2, day2).to_datetime() difference = lc_day.toordinal() - gc_day.toordinal() print (f '公历 {gc_date} 距离 农历 {lc_date} 相差 {abs(difference)} 天' ) return difference if __name__ = = '__main__' : # 当前日期对应的农历日期 date1 = get_chinese_traditional_calendar() print (date1) print (date1.chinese()) # 指定日期对应的农历日期 date2 = get_chinese_traditional_calendar( "20220328" ) print (date2) print (date2.chinese()) # 公历日期相差 get_difference_days( "20220511" ) get_difference_days( "20220327" , "20221001" ) # 公历距离农历相差 get_difference_chinese_calendar( "20220327" , "20220303" ) # 距离农历三月三 get_difference_chinese_calendar( "20220327" , "20220505" ) # 距离端午节 get_difference_chinese_calendar( "20220327" , "20220815" ) # 距离中秋节 get_difference_chinese_calendar( "20220327" , "20220909" ) # 距离重阳节 get_difference_chinese_calendar( "20220327" , "20230101" ) # 距离春节 |
以上就是Python利用zhdate模块实现农历日期处理的详细内容,更多关于Python农历日期处理的资料请关注服务器之家其它相关文章!
原文链接:https://blog.csdn.net/hzblucky1314/article/details/123861693