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使用自带的ConfigParser模块读写ini配置文件
Jun 26 Python
python subprocess 杀掉全部派生的子进程方法
Jan 16 Python
Python中二维列表如何获取子区域元素的组成
Jan 19 Python
详解django三种文件下载方式
Apr 06 Python
对Pyhon实现静态变量全局变量的方法详解
Jan 11 Python
Python3使用TCP编写一个简易的文件下载器功能
May 08 Python
python实现网站用户名密码自动登录功能
Aug 09 Python
Django和Flask框架优缺点对比
Oct 24 Python
在win64上使用bypy进行百度网盘文件上传功能
Jan 02 Python
keras得到每层的系数方式
Jun 15 Python
详解java调用python的几种用法(看这篇就够了)
Dec 10 Python
Python实现对齐打印 format函数的用法
Apr 28 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
Smarty+QUICKFORM小小演示
2007/02/25 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
2012/12/29 PHP
PHP远程采集图片详细教程
2014/07/01 PHP
php网页病毒清除类
2014/12/08 PHP
浅析PHP echo 和 print 语句
2020/06/30 PHP
Javascript的数组与字典用法与遍历对象的属性技巧
2012/11/07 Javascript
javascript自适应宽度的瀑布流实现思路
2013/02/20 Javascript
jQuery实现的漂亮表单效果代码
2015/08/18 Javascript
jQuery实现可用于博客的动态滑动菜单完整实例
2015/09/17 Javascript
jQuery添加和删除指定标签的方法
2015/12/16 Javascript
jQuery on()方法绑定动态元素的点击事件实例代码浅析
2016/06/16 Javascript
Angularjs处理页面闪烁的解决方法
2017/03/09 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
2017/06/01 Javascript
微信小程序中页面FOR循环和嵌套循环
2017/06/21 Javascript
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
jQuery实现右侧抽屉式在线客服功能
2017/12/25 jQuery
解决JSON.stringify()自动将中文转译成unicode的问题
2018/01/05 Javascript
JSON获取属性值方法代码实例
2020/06/30 Javascript
Python实现的下载8000首儿歌的代码分享
2014/11/21 Python
python实现端口转发器的方法
2015/03/13 Python
Python实现豆瓣图片下载的方法
2015/05/25 Python
利用Python实现微信找房机器人实例教程
2019/03/10 Python
django models里数据表插入数据id自增操作
2020/07/15 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
2020/08/27 Python
浅析两列自适应布局的3种思路
2016/05/03 HTML / CSS
土耳其家居建材网站:Koçtaş
2016/11/22 全球购物
美国名牌香水折扣网站:Hottperfume
2021/02/10 全球购物
社区学习十八大感想
2014/01/22 职场文书
家长学校实施方案
2014/03/15 职场文书
团队精神口号
2014/06/06 职场文书
不错的求职信范文
2014/07/20 职场文书
五好文明家庭事迹材料
2014/12/20 职场文书
大学生学期个人总结
2015/02/12 职场文书
房地产项目合作意向书
2015/05/08 职场文书
骆驼祥子读书笔记
2015/06/26 职场文书
Python学习之异常中的finally使用详解
2022/03/16 Python