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

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

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

由于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-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 天

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

参考资料

[1]

百度百科-农历: https://baike.baidu.com/item/%E5%86%9C%E5%8E%86/67925

[2]

github: https://github.com/CutePandaSh/zhdate

这是我开发的机器人公众号小号,目前增加了天气查询,955公司名单,关注时间查询;后面还会增加图片功能和每日送书抽奖送书活动,以及调戏功能,欢迎来体验,捧场。

一个机器人公众号已经上线,欢迎调戏

推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

  • 1).卧槽!Pdf转Word用Python轻松搞定!

  • 2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃

  • 3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密

  • 4).80行代码!用Python做一个哆来A梦分身

  • 5).你必须掌握的20个python代码,短小精悍,用处无穷

  • 6).30个Python奇淫技巧集

  • 7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货

  • 8).再见Python!我要学Go了!2500字深度分析!

  • 9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片

点阅读原文,看B站我的视频!

666,Python竟然还可以计算农历!相关推荐

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

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

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

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

  3. 三行代码把女朋友照片变成了素描图片!Python竟然还能这样

    我们知道图片除了最普通的彩色图,还有很多类型,比如素描,卡通,黑白等等,今天就介绍如何使用python和opencv来实现图片变素描图. 首先将彩色图转换成灰度图: 对灰度图进行求其反色的操作: 对第 ...

  4. 跳一跳python刷分_微信跳一跳技术手段高分秘籍:不仅可以用 Python 刷分,竟然还可以直接改分...

    原标题:微信跳一跳技术手段高分秘籍:不仅可以用 Python 刷分,竟然还可以直接改分 程序员头条(ID:CoderTop) 报道 微信跳一跳不仅可以用 Python 刷分,竟然还可以直接改分 最近这 ...

  5. 仅使用python基本语法、即不使用任何模块、编写_微博可以设置“仅半年内可见”!你竟然还不知道???...

    原标题:微博可以设置"仅半年内可见"!你竟然还不知道??? 主编乱弹妞:两枚少女心爆棚的"女汉子",爱吃会耍又可爱,卖得了萌,犯得了二,自诩追得上陈伟霆,嫁得了 ...

  6. 小白学python需要多久_小白学Python | 你还在说你入不了门吗

    收藏的好多啊 原创不易,动动小手,点个赞啦!! 十二月份,天气有时候会很阴沉,一天都见不到太阳.气温也慢慢变冷了,晚上回家还是会感觉到衣服穿少了. 阴阴沉沉总会过去的,我还是期待阳春三月. 2019年 ...

  7. 比较精确的计算农历节气的java源码

    在网上找了好多计算农历节气的java源码,有好多都有误差,另外靠存储查找的方法终究不靠谱. 最近在"绿色冰点"的博客上看到了关于"寿星万年历---java算法实现&quo ...

  8. python判断素数_小白学Python | 你还在说你入不了门吗

    收藏的好多啊 原创不易,动动小手,点个赞啦!! 十二月份,天气有时候会很阴沉,一天都见不到太阳.气温也慢慢变冷了,晚上回家还是会感觉到衣服穿少了. 阴阴沉沉总会过去的,我还是期待阳春三月. 2019年 ...

  9. 《从问题到程序:用Python学编程和计算》——第2章 计算和编程初步 2.1 数值表达式和算术...

    本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第2章,第2.1节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第2 ...

最新文章

  1. 什么是时间导数(Time derivative)
  2. 代码优化 5 大原则,第一条就是别优化了!!!
  3. how is odata metadata request served 故意把configuration file里的GM6改成GM61之后
  4. CSS鼠标悬停隐藏展开简介特效
  5. netif_receive_skb 函数解析
  6. MySQL 定时任务event 按天建表 并将前一天数据导入新建的表中并删除总表数据 实现分表功能
  7. 用友U8总账对账不平问题总结
  8. 复变函数在计算机科学的应用,[2018年最新整理]MATLAB在复变函数与积分变换的应用.doc...
  9. python程序设计基础与应用 机械工业出版社_Python程序设计——从编程基础到专业应用...
  10. matlab圆孔孔壁应力集中,具有功能梯度加强环的有限尺寸开孔板应力集中问题
  11. android图标分组名称唯美简单可复制,分组名称唯美简短的
  12. 题目:P3717 [AHOI2017初中组]cover
  13. 方差、标准差、均方根误差、平均绝对误差的总结
  14. 以太网结构框架的学习
  15. 每股收益具体怎么来的
  16. 如何在visio中画出矩阵
  17. Docker的镜像制作与整套项目一键打包部署
  18. 基于Android的租车app
  19. Spring+SpringMVC+Hibernate整合(封装CRUD操作)
  20. 用java的swing组件实现简易的图书管理系统

热门文章

  1. NRF52832 + NRF24L01 通讯
  2. github使用AccessToken登录配置教程
  3. 完成将 toChineseNum, 可以将数字转换成中文大写的表示,处理到万级别,例如 toChineseNum(12345),返回 一万二千三百四十五...
  4. 桌面图标阴影去除方法--ZT自百度知道
  5. TFT-LCD的主要特点以及市场分析
  6. idea全局替换对象属性,同时编辑多行
  7. vue项目中 处理身份证号**
  8. 【硬核】“需求”衍生了社会?
  9. git撤销单个文件的修改_git 撤销修改以及删除文件
  10. html 换行特殊符号,html中的换行符号