Python利用zhdate模块实现农历日期处理


Posted in Python onMarch 31, 2022

简介

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")  # 距离春节

以上就是Python利用zhdate模块实现农历日期处理的详细内容,更多关于Python农历日期处理的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python程序设计入门(2)变量类型简介
Jun 16 Python
python用Pygal如何生成漂亮的SVG图像详解
Feb 10 Python
python 迭代器和iter()函数详解及实例
Mar 21 Python
Python中static相关知识小结
Jan 02 Python
python使用opencv按一定间隔截取视频帧
Mar 06 Python
python查看模块安装位置的方法
Oct 16 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
May 10 Python
python实现微信自动回复机器人功能
Jul 11 Python
Python实现蒙特卡洛算法小实验过程详解
Jul 12 Python
python3 实现调用串口功能
Dec 26 Python
python两个list[]相加的实现方法
Sep 23 Python
Python+OpenCV实现图片中的圆形检测
Apr 07 Python
详解Python中__new__方法的作用
Mar 31 #Python
利用Python将list列表写入文件并读取的方法汇总
Mar 25 #Python
利用Python多线程实现图片下载器
Python实现灰色关联分析与结果可视化的详细代码
聊聊基于pytorch实现Resnet对本地数据集的训练问题
pycharm安装深度学习pytorch的d2l包失败问题解决
利用For循环遍历Python字典的三种方法实例
Mar 25 #Python
You might like
常用表单验证类,有了这个,一般的验证就都齐了。
2006/12/06 PHP
php简单静态页生成过程
2008/03/27 PHP
打造超酷的PHP数据饼图效果实现代码
2011/11/23 PHP
PHP结合jQuery实现找回密码
2015/07/22 PHP
yii gridview实现时间段筛选功能
2017/08/15 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
JS 如果改变span标签的是否隐藏属性
2011/10/06 Javascript
jQuery实现切换页面布局使用介绍
2011/10/09 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
2015/03/04 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
2015/08/25 Javascript
JavaScript对HTML DOM使用EventListener进行操作
2015/10/21 Javascript
对javascript继承的理解
2016/10/11 Javascript
js表单登陆验证示例
2016/10/19 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
2017/01/20 Javascript
微信小程序 request接口的封装实例代码
2017/04/26 Javascript
jQuery实现简单的滑动导航代码(移动端)
2017/05/22 jQuery
详解基于Vue+Koa的pm2配置
2017/10/24 Javascript
Angular实现的自定义模糊查询、排序及三角箭头标注功能示例
2017/12/28 Javascript
Vue 换肤的示例实践
2018/01/23 Javascript
使用Vue制作图片轮播组件思路详解
2018/03/21 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
详解如何使用webpack打包JS
2018/06/21 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
Python实现简单石头剪刀布游戏
2021/01/20 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
wxpython实现按钮切换界面的方法
2019/11/19 Python
Pytorch十九种损失函数的使用详解
2020/04/29 Python
python中pow函数用法及功能说明
2020/12/04 Python
党员评议自我评价
2015/03/03 职场文书
试用期自我评价范文
2015/03/10 职场文书
论文致谢词范文
2015/05/14 职场文书
班干部学习委员竞选稿
2015/11/20 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
python开发实时可视化仪表盘的示例
2021/05/07 Python