利用Python计算农历日期

本文介绍如何使用Python的zhdate库进行阳历与农历日期转换,并通过实际案例计算农历节日与当前日期的天数差。涵盖了闰月处理和中文输出,适合初学者学习农历计算技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用Python计算农历日期


今天在“俊红的数据分析之路”公众号看到一篇计算农历日期的文章,于是跟着练习一下。运行环境:

  • PyCharm 2020.1
  • macOS Monterey Version 12.3.1
  • Python 3.9.9
  • Jupyter notebook

现整理成文分享如下:

首先安装第三方开源模块,在命令行输入如下命令:

pip install zhdate

使用方法:

1.1 阳历与农历日期的转换

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

from datetime import ZhDate

# 新建农历2022年二月初四的日期对象
lunar_date = ZhDate(2022, 2, 4)
# 输出农历日期的字符串
print(lunar_date)

结果如下:

农历202224

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

t_date1 = lunar_date.to_datetime()   # 从农历日期转换为阳历日期
t_date1

结果如下:

Out[22]: datetime.datetime(2022, 3, 6, 0, 0)

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

from datetime import datetime

solar_date = datetime(2022, 4, 4)
solar_to_lunar_date = ZhDate.from_datetime(solar_date) # 从阳历日期转换为农历日期
print(solar_to_lunar_date)

结果如下:

农历202234

1.2 闰月

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

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

结果如下:

2020-05-07 00:00:00

1.3 其他

中文输出, Jupyter notebook下输入如下命令:

# 中文输出
from zhdate import ZhDate
from datetime import datetime
solar_date = datetime(2022, 4, 1) # 新建一个阳历日期
solar_to_lunar_date = ZhDate.from_datetime(solar_date)  # 阳历日期转换农历日期
print(solar_to_lunar_date.chinese())  # 输出中文农历日期

结果如下:

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

当天的农历日期, 输入如下命令:

lunar_today = ZhDate.today()
print(lunar_today)

结果如下:

农历202234

案例:计算节日距离天数

距离“五一”劳动节还有多少天,输入如下命令:

from datetime import datetime
today = datetime.now()  # 今天的日期
today_str = today.strftime('%Y-%m-%d') # 设定日期格式年月日
May_1st = datetime(2022, 5, 1) # 五一劳动节
dural_days = May_1st.toordinal() - today.toordinal()
print(f'今天是{today_str}距离五一劳动节还有{dural_days}天')

结果如下:

今天是2022-04-04距离五一劳动节还有27

根据农历日期,计算距离端午节还有多少天,结合zhdate库,代码如下:

# 计算农历节日还有多少天
from datetime import datetime
from zhdate import ZhDate
today = datetime.now()  # 今天的日期
today_str = today.strftime('%Y-%m-%d') # 设定日期格式年月日
dragon_boat_Day = ZhDate(2022, 5, 5).to_datetime() #转换成阳历日期
dural_days = dragon_boat_Day.toordinal() - today.toordinal()
print(f'今天是{today_str}距离端午节还有{dural_days}天')

结果如下:

今天是2022-04-04距离端午节还有60

距离中秋节还有多少天,代码如下:

middle_autumn_Day = ZhDate(2022, 8, 15).to_datetime() #转换成阳历日期
dural_days = middle_autumn_Day.toordinal() - today.toordinal()
print(f'今天是{today_str}距离中秋节还有{dural_days}天')

结果如下:

今天是2022-04-04距离中秋节还有159

参考资料:【1】百度百科-农历 【2】github

### 使用 Python 获取农历时间 为了实现获取农历时间的功能,Python 提供了几种方法来处理这个问题。其中最常用的是通过 `lunarcalendar` 库或 `zhdate` 库。 #### 方法一:使用 `lunarcalendar` 库 这是一个专门用于中国农历计算的库,能够方便地将公历日期转换成对应的农历日期。 安装该库可以通过 pip 命令完成: ```bash pip install lunarcalendar ``` 下面是一个简单的例子展示如何使用这个库来进行日期转换: ```python from lunarcalendar import Converter, SolarDate, LunarDate # 将阳历转阴历 solar_date = SolarDate(2023, 10, 5) lunar_date = Converter.Solar2Lunar(solar_date) print(f'Solar Date: {solar_date}') print(f'Lunar Date: {lunar_date}') # 输出农历日期以及是否为闰月等信息 ``` #### 方法二:使用 `zhdate` 库 另一个选项是 `zhdate` 库,它同样提供了强大的功能来操作中国的传统节日和农历。 安装方式如下: ```bash pip install zhdate ``` 下面是利用 `zhdate` 实现相同目的的例子: ```python import zhdate as zhd gregorian_year = 2023 gregorian_month = 10 gregorian_day = 5 # 创建 Gregorian 日历对象并转换为中国农历 chinese_lunar_calendar = zhd.ZhDate.from_gregorian(gregorian_year, gregorian_month, gregorian_day) print(chinese_lunar_calendar.chinese()) # 打印完整的中文农历描述 ``` 这两种方法都可以有效地帮助用户获得所需的农历时间数据。对于更复杂的应用场景,还可以探索更多高级特性和自定义设置[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bruce_xiaowei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值