Python利用zhdate模块实现农历日期处理
作者:三爷带你飞 发布时间:2023-03-07 22:10:20
标签:Python,农历,日期
简介
zhdate模块统计从1900年到2100年的农历月份数据代码,支持农历和公历之间的转化,并且支持日期差额运算。
安装
pip install zhdate
主要功能
1、获取公历对应的农历日期
2、获取中文描述农历日期
3、计算公历距离农历差额
获取公历对应的农历日期:格式ZhDate.from_datetime(datetime(year, month, day))
print(ZhDate.from_datetime(datetime(2022, 3, 27)))
# 农历2022年2月25日
获取中文描述农历日期:需对结果调用chinese()方法
格式ZhDate.from_datetime(datetime(year, month, day)).chinese()
print(ZhDate.from_datetime(datetime(2022, 3, 27)).chinese())
# 二零二二年二月二十五 壬寅年 (虎年)
计算公历距离农历差额:
格式:difference = lc_day.toordinal() - gc_day.toordinal()
源码
# -*- 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") # 距离春节
来源:https://blog.csdn.net/hzblucky1314/article/details/123861693


猜你喜欢
- 目录mysqladmin命令UPDATE user 语句SET PASSWORD 语句root密码丢失的情况(待验证)mysqladmin命
- mysql按照某个时间段分组统计今天刚好是碰到一个报表需求,要求根据时段统计各工单的数量。这个就有点皮实了,以前都没搞过这玩意。于是研究了几
- 本文为大家分享了Linux环境下mysql5.6.24自动安装脚本代码,供大家参考,具体内容如下说明:一、本脚本仅供测试使用,若正式环境想要
- 1|0MySQL(MariaDB)1|1一,说明MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可
- 下学期就要学习MySQL了,没事先在家搞一搞,没想到光安装就费了半天劲,所以我决定整理下,供大家参考。第一步 下载安装包:官网毕竟是甲骨文公
- 前面我们讲了 TCP 编程,我们知道 TCP 可以建立可靠连接,并且通信双方都可以以流的形式发送数据。本文我们再来介绍另一个常用的协议–UD
- 1、首先简述数据挖掘的过程第一步:数据选择可以通过业务原始数据、公开的数据集、也可通过爬虫的方式获取。第二步: 数据预处理数据极可能有噪音,
- 一,子选择基本用法 1,子选择的定义 子迭择允许把一个查询嵌套在另一个查询当中。比如说:一个考试记分项目把考试事件分为考试(T)和测验(Q)
- 1. 真值测试所谓真值测试,是指当一种类型对象出现在if或者while条件语句中时,对象值表现为True或者False。弄清楚各种情况下的真
- 引言对图像进行形态学变换。变换对象一般为灰度图或二值图,功能函数放在morphology子模块内。1、膨胀(dilation)原理:一般对二
- 本文实例讲述了python实现通过队列完成进程间的多任务功能。分享给大家供大家参考,具体如下:1.通过队列完成进程间的多任务import m
- 本文实例讲述了PHP实现上传文件并存进数据库的方法。分享给大家供大家参考。具体如下:show_add.php文件如下:<?php &n
- 这是用来快速学习 Python Socket 套接字编程的指南和教程。Python 的 Socket 编程跟 C 语言很像。Python 官
- Windows客户端业务群产品营销主管斯蒂芬最近在向记者示范Internet Explorer 8 Beta2版浏览器的技术特征时标识,与用
- 废话少说,直接上代码:<?php/** * Note:for octet-stream upload * 这个是流式上传PHP文件 *
- 下面我挑选出的这几个技巧常常会被人们忽略,但它们在日常编程中能真正的给我们带来不少帮助。1. 字典推导(Dictionary compreh
- MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进
- 配置类config_file:from configparser import ConfigParserclass config_file:
- 出现这样的问题是当你浏览UTF-8编码的时候,服务器默认用UTF-8的引擎来输出html,当你用再浏览GB2312的页面时,它还是用UTF-
- 一、事件流 IE中是冒泡型事件,即从最特定的事件目标到最不特定的事件目标。 Netscape Navigator使用的是捕获型事件,这个跟I