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轻松实现代码编码格式转换
Mar 26 Python
让Python代码更快运行的5种方法
Jun 21 Python
浅析Python 中整型对象存储的位置
May 16 Python
详解Python中 sys.argv[]的用法简明解释
Dec 20 Python
python pandas dataframe 按列或者按行合并的方法
Apr 12 Python
pygame游戏之旅 添加键盘按键的方法
Nov 20 Python
在python中按照特定顺序访问字典的方法详解
Dec 14 Python
Python之列表实现栈的工作功能
Jan 28 Python
python连接、操作mongodb数据库的方法实例详解
Sep 11 Python
Python 找出出现次数超过数组长度一半的元素实例
May 11 Python
什么是python的id函数
Jun 11 Python
Django框架中表单的用法
Jun 10 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
在Zeus Web Server中安装PHP语言支持
2006/10/09 PHP
PHP数据类型之布尔型的介绍
2013/04/28 PHP
PHP实现正则匹配所有括号中的内容
2018/06/22 PHP
javascript 最常用的10个自定义函数[推荐]
2009/12/26 Javascript
JS中操作JSON总结
2020/12/06 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
使用Chrome浏览器调试AngularJS应用的方法
2015/06/18 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
nodejs 中模拟实现 emmiter 自定义事件
2016/02/22 NodeJs
bootstrap模态框垂直居中效果
2016/12/03 Javascript
json的结构与遍历方法实例分析
2017/04/25 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
详解React之key的使用和实践
2018/09/29 Javascript
[36:05]DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs Optic
2018/04/01 DOTA
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
python实现class对象转换成json/字典的方法
2016/03/11 Python
python实现自动登录后台管理系统
2018/10/18 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
2018/10/31 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
python 动态渲染 mysql 配置文件的示例
2020/11/20 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
2020/12/14 Python
HTML5 使用 sessionStorage 进行页面传值的方法
2018/07/02 HTML / CSS
亚马逊新加坡官方网站:Amazon.sg
2020/03/25 全球购物
初一地理教学反思
2014/01/16 职场文书
餐饮商业计划书范文
2014/04/29 职场文书
好习惯伴我成长演讲稿
2014/05/21 职场文书
廉政教育的心得体会
2014/09/01 职场文书
大学拉赞助协议书范文
2014/09/26 职场文书
产品质量保证书范本
2015/02/27 职场文书
幼儿园食品安全责任书
2015/05/08 职场文书
政审证明材料
2015/06/19 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
JavaScript文档对象模型DOM
2021/11/20 Javascript