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代码来绘制彭罗斯点阵的教程
Apr 03 Python
Python中unittest模块做UT(单元测试)使用实例
Jun 12 Python
python strip() 函数和 split() 函数的详解及实例
Feb 03 Python
Python简单删除列表中相同元素的方法示例
Jun 12 Python
设置python3为默认python的方法
Oct 31 Python
使用Python计算玩彩票赢钱概率
Jun 26 Python
django rest framework serializer返回时间自动格式化方法
Mar 31 Python
不到20行实现Python代码即可制作精美证件照
Apr 24 Python
python 模拟登录B站的示例代码
Dec 15 Python
Python实例教程之检索输出月份日历表
Dec 16 Python
python实现批量提取指定文件夹下同类型文件
Apr 05 Python
Pandas加速代码之避免使用for循环
May 30 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
apache配置虚拟主机的方法详解
2013/06/17 PHP
PHP循环遍历数组的3种方法list()、each()和while总结
2014/11/19 PHP
thinkPHP基于ajax实现的菜单与分页示例
2016/07/12 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
JQuery 风格的HTML文本转义
2009/07/01 Javascript
JQuery toggle使用分析
2009/11/16 Javascript
window.location不跳转的问题解决方法
2014/04/17 Javascript
JS给超链接加确认对话框的方法
2015/02/24 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
2015/09/06 Javascript
AngularJS 路由详解和简单实例
2016/07/28 Javascript
ReactNative列表ListView的用法
2017/08/02 Javascript
DVA框架统一处理所有页面的loading状态
2017/08/25 Javascript
Bootstrap Table快速完美搭建后台管理系统
2017/09/20 Javascript
JS实现调用本地摄像头功能示例
2018/05/18 Javascript
vue项目移动端实现ip输入框问题
2019/03/19 Javascript
Element-ui中元素滚动时el-option超出元素区域的问题
2019/05/30 Javascript
VSCode 配置uni-app的方法
2020/07/11 Javascript
Python爬虫将爬取的图片写入world文档的方法
2018/11/07 Python
Python实现最大子序和的方法示例
2019/07/05 Python
python设计微型小说网站(基于Django+Bootstrap框架)
2019/07/08 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
2020/03/07 Python
keras之权重初始化方式
2020/05/21 Python
python 实现rolling和apply函数的向下取值操作
2020/06/08 Python
CSS3 制作旋转的大风车(充满童年回忆)
2013/01/30 HTML / CSS
用纯css3实现的图片放大镜特效效果非常不错
2014/09/02 HTML / CSS
浅谈CSS3特性查询(Feature Query: @supports)功能简介
2017/07/31 HTML / CSS
anello泰国官方网站:日本流行包包品牌
2019/08/08 全球购物
信息技术毕业生自荐信范文
2014/03/13 职场文书
中学生英语演讲稿
2014/04/26 职场文书
老干部工作先进事迹
2014/08/17 职场文书
学术会议通知
2015/04/15 职场文书
2016年中秋节慰问信
2015/12/01 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
基于JavaScript实现省市联动效果
2021/06/22 Javascript