zhdate 是公历、农历换算的python工具包。
生活中有时候需要计算跟农历和天数有关的日期,于是对zhdate进行了封装,实现了如下功能:
1 公历 -> 公历 : 天数
2 公历 -> 农历 : 天数
3 农历 -> 公历 : 天数
4 农历 -> 农历 : 天数
5 公历 + 天数 -> 公历
6 公历 + 天数 -> 农历
7 农历 + 天数 -> 公历
8 农历 + 天数 -> 农历
9 公历 -> 农历
10 农历 -> 公历
可以用。
代码如下,复制保存到本地文件,使用python环境运行就可以了。
# -*- coding: utf-8 -*-
"""
Created on Sun Apr 28 09:25:04 2024
@author: Farman
"""
import zhdate
import datetime
#------------------------------------------------------------------------------
def zhdate_to_date(year, month, day, leap_month):
try:
zd = zhdate.ZhDate(year, month, day, leap_month)
zd = zd.to_datetime()
return True, zd.year, zd.month, zd.day
except:
return False, None, None, None
#x = zhdate_to_date(1938, 10, 29, 0)
#print(x)
def date_to_zhdate(year, month, day):
try:
zd = zhdate.ZhDate(2000, 1, 1, False)
zd = zd.from_datetime(datetime.datetime(year, month, day))
return True, zd.lunar_year, zd.lunar_month, zd.lunar_day, zd.leap_month
except:
return False, None, None, None, None
#x = date_to_zhdate(1979, 2, 10)
#print(x)
#------------------------------------------------------------------------------
def calc_days_between_dates(year_from, month_from, day_from, year_to, month_to, day_to):
try:
d1 = datetime.datetime(year_from, month_from, day_from)
d2 = datetime.datetime(year_to, month_to, day_to)
return True, (d2-d1).days
except:
return False, None
#x = calc_days_between_dates(1938, 10, 29, 2023, 12, 26)
#print(x)
def calc_days_between_zhdates(year_from, month_from, day_from, leap_from, year_to, month_to, day_to, leap_to):
try:
d1 = zhdate.ZhDate(year_from, month_from, day_from, leap_from)
d2 = zhdate.ZhDate(year_to, month_to, day_to, leap_to)
d1 = d1.to_datetime()
d2 = d2.to_datetime()
return True, (d2-d1).days
except:
return False, None
#x = calc_days_between_zhdates(1938, 10, 29, False, 2023, 12, 26, False)
#print(x)
def calc_days_between_date_and_zhdate(year_from, month_from, day_from, year_to, month_to, day_to, leap_to):
try:
d1 = datetime.datetime(year_from, month_from, day_from)
d2 = zhdate.ZhDate(year_to, month_to, day_to, leap_to).to_datetime()
return True, (d2 - d1).days
except:
return Fa