Python实现农历转换教程详解

 更新时间:2022年03月15日 08:27:29   作者:快学Python  
农历,是我国现行的传统历法。它是根据月相的变化周期,每一次月相朔望变化为一个月,参考太阳回归年为一年的长度,并加入二十四节气与设置闰月以使平均历年与回归年相适应。本文将用Python实现农历转换,需要的可以参考一下

前言

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

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

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

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

pip install zhdate

详细使用方法

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

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

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

from zhdate import ZhDate

date1 = ZhDate(2022, 2, 2)  # 新建农历 2022年二月初二(龙抬头)的日期对象
print(date1)  # 直接返回农历日期字符串d

输出:

农历2022年2月2日

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

t_date1 = date1.to_datetime()
t_date1

输出:

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

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

from datetime import datetime

dt_date2 = datetime(2022, 2, 6)
date2 = ZhDate.from_datetime(dt_date2)  # 从阳历日期转换成农历日期对象
date2

输出:

农历2022年1月6日

闰月

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

date3 = ZhDate(2020, 4, 15)  # 新建农历 2020年4月15日
print(date3.to_datetime())

输出:

2020-05-07 00:00:00

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

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

输出:

2020-06-06 00:00:00

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

其他

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

dt_date4 = datetime(2022, 3, 4)
date4 = ZhDate.from_datetime(dt_date4)
print(date4.chinese())

输出:

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

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

ZhDate.today()

输出:

农历2022年2月7日

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

实战:计算节日距离天数

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

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

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

today = datetime.now()
data_str = today.strftime('%Y-%m-%d')
data_str

输出:

'2022-03-09'

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

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

输出:

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

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

oneDay = ZhDate(2022, 8, 15).to_datetime()
difference = oneDay.toordinal()-today.toordinal()
print(f'今天 {data_str} 距离中秋节还有 {difference} 天')

输出:

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

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

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

相关文章

  • python之PyQt按钮右键菜单功能的实现代码

    python之PyQt按钮右键菜单功能的实现代码

    这篇文章主要介绍了python PyQt按钮右键菜单功能的实现代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 如何使用python提取字符串的中英文(正则判断)

    如何使用python提取字符串的中英文(正则判断)

    这篇文章主要给大家介绍了关于如何使用python提取字符串中英文的相关资料,主要通过正则re中的sub函数、findall函数以及compile函数判断来实现,需要的朋友可以参考下
    2021-05-05
  • pyecharts的Tab和Legend布局详情

    pyecharts的Tab和Legend布局详情

    这篇文章主要介绍了pyecharts的Tab和Legend布局,pyecharts是百度开源的一款第三方绘图模块,结合的python语言的简易性和Echarts的强大绘图特性,可以用python对其调用,输出交互性好,精美乖巧且符合审美的图表,下文我们就来学习pyecharts的Tab和Legend烦人布局布局
    2022-03-03
  • Django REST framework内置路由用法

    Django REST framework内置路由用法

    这篇文章主要介绍了Django REST framework内置路由用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • python单例模式原理与创建方法实例分析

    python单例模式原理与创建方法实例分析

    这篇文章主要介绍了python单例模式原理与创建方法,结合实例形式分析了Python单例模式的概念、原理、定义、使用方法及相关操作注意事项,需要的朋友可以参考下
    2019-10-10
  • Python如何使用vars返回对象的属性列表

    Python如何使用vars返回对象的属性列表

    这篇文章主要介绍了Python如何使用vars返回对象的属性列表,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Pytorch四维Tensor转图片并保存方式(维度顺序调整)

    Pytorch四维Tensor转图片并保存方式(维度顺序调整)

    这篇文章主要介绍了Pytorch四维Tensor转图片并保存方式(维度顺序调整),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Python 如何调试程序崩溃错误

    Python 如何调试程序崩溃错误

    这篇文章主要介绍了Python 如何调试程序崩溃错误,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-08-08
  • python抓取百度首页的方法

    python抓取百度首页的方法

    这篇文章主要介绍了python抓取百度首页的方法,涉及Python使用urllib模块实现页面抓取的相关技巧,需要的朋友可以参考下
    2015-05-05
  • pytorch部署到jupyter中的问题及解决方案

    pytorch部署到jupyter中的问题及解决方案

    这篇文章主要介绍了pytorch部署到jupyter中,在这里需要注意我再输入的时候出现了一些无法定位的提示,但是我的电脑没有影响使用jupyter,还是可以使用jupyter并且可以import torch,本文给大家讲解的非常详细,需要的朋友参考下吧
    2022-05-05

最新评论