脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Python实现农历转换教程详解

Python实现农历转换教程详解

2022-11-02 09:26快学Python Python

农历,是我国现行的传统历法。它是根据月相的变化周期,每一次月相朔望变化为一个月,参考太阳回归年为一年的长度,并加入二十四节气与设置闰月以使平均历年与回归年相适应。本文将用Python实现农历转换,需要的可以参考

前言

最近处理工作任务的时候遇到了转换农历的问题。一开始我打算搜索在线处理的网站或者转换的接口,结果找到了一个Python库可以直接解决,今天正好同大家分享一下。

Python实现农历转换教程详解

农历,是我国现行的传统历法。它是根据月相的变化周期,每一次月相朔望变化为一个月,参考太阳回归年为一年的长度,并加入二十四节气与设置闰月以使平均历年与回归年相适应。

对于我们处理数据来说,并不需要去详细研究农历与公历之间的转换关系。在Python中,ZhDate库支持农历-公历互相转换、日期加减以及全中文日期生成,内置了1900-2100年的农历数据,仅依赖Python内置模块。github.com/CutePandaSh/zhdate

由于ZhDate属于Python的第三⽅开源模块,因此需要额外安装、导⼊后,才能使⽤。直接在命令⾏窗⼝中输⼊如下命令:

?
1
pip install zhdate

详细使用方法

zhdate库,不用网络接口直接本地计算中国农历,支持农历阳历互转。

阳历与农历日期的相互转换

在交互式环境中输入如下命令:

?
1
2
3
4
from zhdate import ZhDate
 
date1 = ZhDate(202222)  # 新建农历 2022年二月初二(龙抬头)的日期对象
print(date1)  # 直接返回农历日期字符串d

输出:

农历2022年2月2日

在交互式环境中输入如下命令:

?
1
2
t_date1 = date1.to_datetime()
t_date1

输出:

datetime.datetime(2022, 3, 4, 0, 0)

在交互式环境中输入如下命令:

?
1
2
3
4
5
from datetime import datetime
 
dt_date2 = datetime(202226)
date2 = ZhDate.from_datetime(dt_date2)  # 从阳历日期转换成农历日期对象
date2

输出:

农历2022年1月6日

闰月

在交互式环境中输入如下命令:

?
1
2
date3 = ZhDate(2020415)  # 新建农历 2020年4月15日
print(date3.to_datetime())

输出:

2020-05-07 00:00:00

Python实现农历转换教程详解

在交互式环境中输入如下命令:

?
1
2
date3 = ZhDate(2020415)  # 新建农历 2020年闰4月15日
print(date3.to_datetime())

输出:

2020-06-06 00:00:00

这一年农历4月15日的同学,可以分别在5月7日和6月6日分别过两次农历生日。

其他

中文输出,在交互式环境中输入如下命令:

?
1
2
3
dt_date4 = datetime(202234)
date4 = ZhDate.from_datetime(dt_date4)
print(date4.chinese())

输出:

二零二二年二月初二 壬寅年 (虎年)

当天的农历日期,在交互式环境中输入如下命令:

?
1
ZhDate.today()

输出:

农历2022年2月7日

此外,zhdate模块也支持加减法。两个zhdate对象相减可以得到两个农历日期的差额,同时加整数也可以返回相隔天数以后的新农历对象。

Python实现农历转换教程详解

实战:计算节日距离天数

下面通过一个实战项目练习一下这个zhdate模块。

加入我们想快速地了解今天距离某个节日还有多少天?可以使用zhdatedatetime库搭配解决这个问题。

在交互式环境中输入如下命令:

?
1
2
3
today = datetime.now()
data_str = today.strftime('%Y-%m-%d')
data_str

输出:

'2022-03-09'

计算距离劳动节的天数,在交互式环境中输入如下命令:

?
1
2
3
oneDay = datetime(202251)
difference = oneDay.toordinal()-today.toordinal()
print(f'今天 {data_str} 距离五一劳动节还有 {difference} 天')

输出:

今天 2022-03-09 距离五一劳动节还有 53 天

计算距离中秋节的天数,在交互式环境中输入如下命令:

?
1
2
3
oneDay = ZhDate(2022815).to_datetime()
difference = oneDay.toordinal()-today.toordinal()
print(f'今天 {data_str} 距离中秋节还有 {difference} 天')

输出:

今天 2022-03-09 距离中秋节还有 185 天

大家有时间也可以动手试一试,测试一下还距离其他节日多少天?实战时要注意该节日是按照公历统计还是农历设置的。

到此这篇关于Python实现农历转换教程详解的文章就介绍到这了,更多相关Python农历内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://mp.weixin.qq.com/s/jYM_SLSL81gPf1XUmYtBfQ

延伸 · 阅读

精彩推荐
  • Python5个用于Python前端开发的工具

    5个用于Python前端开发的工具

    Python是一种高度通用且功能强大的编程语言,其特质使其非常受欢迎。实际上,Python被用于无数项目,并且被认为在AI和ML应用程序开发中发挥了重要作用。...

    今日头条15522021-02-23
  • Pythonpython 自动轨迹绘制的实例代码

    python 自动轨迹绘制的实例代码

    今天小编就为大家分享一篇python 自动轨迹绘制的实例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    二仪式7122021-08-01
  • PythonPython读取txt内容写入xls格式excel中的方法

    Python读取txt内容写入xls格式excel中的方法

    今天小编就为大家分享一篇Python读取txt内容写入xls格式excel中的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    WeilianSunshine14572021-04-06
  • PythonPython推导式简单示例【列表推导式、字典推导式与集合推导式】

    Python推导式简单示例【列表推导式、字典推导式与集合推导式】

    这篇文章主要介绍了Python推导式,结合简单实例形式分析了Python列表推导式、字典推导式与集合推导式基本使用方法,需要的朋友可以参考下...

    Duke_Nan8702021-04-24
  • Pythonpython基于http下载视频或音频

    python基于http下载视频或音频

    这篇文章主要为大家详细介绍了python基于http下载视频或音频,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    panda-star5212021-03-06
  • PythonPython批量重命名同一文件夹下文件的方法

    Python批量重命名同一文件夹下文件的方法

    这篇文章主要介绍了Python批量重命名同一文件夹下文件的方法,涉及Python使用os模块操作文件的相关技巧,需要的朋友可以参考下 ...

    oyzway11312020-07-07
  • Pythonpython基于递归解决背包问题详解

    python基于递归解决背包问题详解

    这篇文章主要介绍了python基于递归解决背包问题,递归是个好东西,任何具有递归性质的问题通过函数递归调用会变得很简单。一个很复杂的问题,几行代...

    thelostmathematician8122021-07-30
  • Python玩转Python发短信的实现

    玩转Python发短信的实现

    用Python实现发短信功能,当监控到问题出现时,短信报警,使问题能得到及时的处理。当然,我相信,用Python发短信应用场景不止此一处,下面我们开始...

    安果移不动8882022-09-03