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解析xml成对应的html示例分享
Apr 02 Python
python编写暴力破解FTP密码小工具
Nov 19 Python
tensorflow获取变量维度信息
Mar 10 Python
python 读文件,然后转化为矩阵的实例
Apr 23 Python
python实现名片管理系统项目
Apr 26 Python
Python中使用gflags实例及原理解析
Dec 13 Python
Pytorch实现的手写数字mnist识别功能完整示例
Dec 13 Python
Python安装OpenCV的示例代码
Mar 05 Python
python中pyplot基础图标函数整理
Nov 10 Python
python通过cython加密代码
Dec 11 Python
selenium如何定位span元素的实现
Jan 13 Python
在python3.9下如何安装scrapy的方法
Feb 03 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
PHP 5.0对象模型深度探索之绑定
2006/09/05 PHP
附件名前加网站名
2008/03/23 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
PHP has encountered a Stack overflow问题解决方法
2014/11/03 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
php探针不显示内存解决方法
2019/09/17 PHP
设定php简写功能的方法
2019/11/28 PHP
Javascript this指针
2009/07/30 Javascript
node.js中的http.createClient方法使用说明
2014/12/15 Javascript
深入浅析JavaScript函数前面的加号和叹号
2016/07/09 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
jQuery的事件预绑定
2016/12/05 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
jquery replace方法去空格
2017/05/08 jQuery
Vue.js tab实现选项卡切换
2017/05/16 Javascript
JavaScript中BOM对象原理与用法分析
2019/07/09 Javascript
[05:17]DOTA2睡衣妹卖萌求签名 CJ第二天全明星影像
2013/07/28 DOTA
Python元字符的用法实例解析
2018/01/17 Python
python利用小波分析进行特征提取的实例
2019/01/09 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
2020/01/10 Python
python+selenium 脚本实现每天自动登记的思路详解
2020/03/11 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
2020/04/08 Python
keras分类模型中的输入数据与标签的维度实例
2020/07/03 Python
Python timeit模块原理及使用方法
2020/10/10 Python
python中的split、rsplit、splitlines用法说明
2020/10/23 Python
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
2016/04/26 HTML / CSS
马来西亚最大的电器网站:Senheng
2017/10/13 全球购物
哈萨克斯坦最大的时装、鞋子和配饰在线商店:Lamoda.kz
2019/11/19 全球购物
药品质量检测应届生求职信
2013/11/14 职场文书
教师对学生的寄语
2014/04/03 职场文书
《泉水》教学反思
2014/04/11 职场文书
党的群众路线教育实践活动总结报告
2014/04/28 职场文书
怎样写离婚协议书
2015/01/26 职场文书
python爬虫之爬取笔趣阁小说
2021/04/22 Python