利用Python计算农历日期

简介: 利用Python计算农历日期

利用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 闰月
在交互式环境中输入如下命令:

# 新建农历 2020415日
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

相关文章
|
23天前
|
Python
在 Python 中,如何将日期时间类型转换为字符串?
在 Python 中,如何将日期时间类型转换为字符串?
119 64
|
16天前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
42 18
|
19天前
|
Python
使用Python计算字符串的SHA-256散列值
使用Python计算字符串的SHA-256散列值
24 7
|
25天前
|
Python
在 Python 中,如何将字符串中的日期格式转换为日期时间类型?
在 Python 中,如何将字符串中的日期格式转换为日期时间类型?
32 6
|
24天前
|
数据挖掘 Python
用Python轻松获取任意月份的公休日期
本文介绍了如何使用Python的`calendar`和`datetime`模块轻松获取任意月份的公休日期,包括周六和周日。通过示例代码,用户可以输入年份和月份,程序将输出该月份的所有公休日。这对于安排会议、规划旅行或数据分析都非常有用。
25 3
|
1月前
|
机器学习/深度学习 算法 编译器
Python程序到计算图一键转化,详解清华开源深度学习编译器MagPy
【10月更文挑战第26天】MagPy是一款由清华大学研发的开源深度学习编译器,可将Python程序一键转化为计算图,简化模型构建和优化过程。它支持多种深度学习框架,具备自动化、灵活性、优化性能好和易于扩展等特点,适用于模型构建、迁移、部署及教学研究。尽管MagPy具有诸多优势,但在算子支持、优化策略等方面仍面临挑战。
79 3
|
2月前
|
Python
【10月更文挑战第15天】「Mac上学Python 26」小学奥数篇12 - 图形变换与坐标计算
本篇将通过 Python 和 Cangjie 双语实现图形变换与坐标计算。这个题目帮助学生理解平面几何中的旋转、平移和对称变换,并学会用编程实现坐标变化。
66 1
|
2月前
|
机器学习/深度学习 移动开发 Python
【10月更文挑战第11天】「Mac上学Python 22」小学奥数篇8 - 排列组合计算
本篇将通过 Python 和 Cangjie 双语讲解如何计算排列与组合。这道题目旨在让学生学会使用排列组合公式解决实际问题,并加深对数学知识和编程逻辑的理解。
67 4
|
2月前
|
数据可视化 Python
【10月更文挑战第12天】「Mac上学Python 23」小学奥数篇9 - 基础概率计算
本篇将通过 Python 和 Cangjie 双语实现基础概率的计算,帮助学生学习如何解决简单的概率问题,并培养逻辑推理和编程思维。
55 1
|
16天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
下一篇
DataWorks