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

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

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

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

pip install zhdate

详细使用方法

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

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

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

from zhdate import ZhDatedate1 = 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 datetimedt_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-04-21'

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

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

输出:

今天 2022-04-21 距离五一劳动节还有 9 天


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

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

输出:

今天 2022-04-21 距离中秋节还有 142 天

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

实战项目:Python还可以计算农历,这个操作你知道了吗?相关推荐

  1. 太强了,Python还可以计算农历

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

  2. python 播放本地音乐_实战项目—python实现本地音乐播放器

    随着网络的发展,我们已经很少将音乐下载到本地,而是直接在线听歌,方便而又直接.也许你用的音乐播放器是这个 也许是这个 这都不是重点,今天我们要用python自己打造一款音乐播放器. 具体思路 使用py ...

  3. 几个超好的Spring boot实战项目 (还不赶紧收藏起来)

    Spring boot实战项目 (还不赶紧收藏起来) 学了Spring boot有一段时间了,但是实战的经验还是比较缺乏.所以自己也是在GItHub和Gitee上找了一些超好的Spring boot项 ...

  4. 666,Python竟然还可以计算农历!

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

  5. 新手python的100个实战项目,python练手经典100例项目

    Python 的练手项目有哪些值得推荐? 基础和爬虫.Python由荷兰数学和计算机科学研究学会的Guido van Rossum于1990 年代初设计,作为一门叫做ABC语言的替代品. Python ...

  6. 人工智能实战项目(python)+多领域实战练手项目

    人工智能实战项目 大家好,我是微学AI,本项目将围绕人工智能实战项目进行展开,紧密贴近生活,实战项目设计多个领域包括:金融.教育.医疗.地理.生物.人文.自然语言处理等:帮助各位读者结合机器学习与深度 ...

  7. 《Python数据分析与挖掘》实战项目 - Python程序设计(期末大作业、课程设计、毕业设计)2012-2021近十年考研英语一真题词汇词频统计与可视化(附代码)

    <Python数据分析与挖掘> - 2012-2021近十年考研英语一真题词汇词频统计与可视化 声明 本文仅在CSDN发布,其他均为盗版.请支持正版! 正版链接: https://blog ...

  8. python项目实战_2个Python入门级的实战项目

    这两天后台收到一些读者朋友的消息,问我有没有字符串的实战项目,我仔细思考了一下,觉得对于入门的朋友来说,不仅需要熟悉字符串的实战项目,还应该掌握Python的其他两种数据类型--列表和字典.今天我就给 ...

  9. python经典项目实战_2个Python入门级的实战项目

    这两天后台收到一些读者朋友的消息,问我有没有字符串的实战项目,我仔细思考了一下,觉得对于入门的朋友来说,不仅需要熟悉字符串的实战项目,还应该掌握Python的其他两种数据类型--列表和字典.今天我就给 ...

最新文章

  1. Matlab与线性代数 -- 单位矩阵
  2. android HDMI 清晰度 分辨率
  3. 安卓逆向系列教程 4.4 逆向云播 VIP
  4. ORACLE的跟踪文件
  5. 字节跳动面试:java编程思想电子版非pdf
  6. mgo和mongo-go-driver使用心得比较
  7. 【底层原理】深入理解Cache (上)
  8. informix for linux数据库下载,informix for linux安装全攻略(原创)
  9. 推荐一个图片在线生成链接的网站
  10. android rn热更新闪退,react-native 导致热更新失败的问题之一
  11. 算法题_寻找最大连通区域
  12. Java 与或非 判断
  13. ChatGPT150个指令大全
  14. oracle10g数据库复制,windows 下oracle 10G 数据库移植到 linux平台 (通过文件直接复制方法)...
  15. 这次的室温超导爆炸性发现,会是人类的进步?
  16. yamaha php mt8评测,诶哟这个盒子不错哟,NUC 8i5BEK简单开箱+评测(更新完毕)
  17. 淘系页面详情API调用展示
  18. chatra无法注册
  19. 场景化分析rem布局原理
  20. 1060显卡支持dx12吗_GTX1660和GTX1060哪个性价比高?GTX1060和GTX1660显卡区别对比

热门文章

  1. mqtt qos属性
  2. 立体视觉:基于OpenGL的立体图像对的软件实现方法
  3. fiddler 自动响应数据保存_十分钟学IT:测试工程师得力助手Fiddler抓包之日常使用...
  4. C#中的partial class(部分类)
  5. SpringBoot后端国际化
  6. linux用kde启动桌面,使用 KDE Plasma 定制 Linux 桌面
  7. 什么是法人分支机构和非法人分支机构
  8. PHP程序员要看的书单 转自http://www.cnblogs.com/piwefei/p/6900491.html
  9. Java 不可变类的整洁之道
  10. laravel-orm