近期工作中遇到了节假日场景,而七夕节、中秋节、重阳节、端午节、清明节、春节这些都是农历的节日,对应到阳历日期并不是固定的。
所以就很有必要有一个转换方法,实现农历日期到阳历日期的转换。
已经有很多大牛对此做了实现,这里记录下亲测好用的方法。
1、首推:简书上 “Python 农历公历相互转换”
https://www.jianshu.com/p/272c5dfa3eef
他在
github
上有发布模块,可以直接pip安装使用。
并且在介绍页有使用方法示例,对于想快速使用、不关心实现细节的用户非常友好了。
为原作者点赞,非常有用的方法模块。
from zhdate import ZhDate as lunar_date
from datetime import datetime
#农历转阳历
date1 = lunar_date(2020,7,7) # 农历 2020年7月7 日期
print(date1) #农历2020年7月7日,直接返回农历日期字符串
print(date1.to_datetime()) #2020-08-25 00:00:00,农历转换成阳历日期 datetime 类型
#阳历转农历
dt_date2 = datetime(2020, 8, 25) #python自带的阳历date类型
print(dt_date2) #2020-08-25 00:00:00
date2 = lunar_date.from_datetime(dt_date2) # 农历2020年7月7日 , 从阳历日期转换成农历日期
print(date2)
#20年闰4月,转的阳历是第二个4月的阳历日期
date3 = lunar_date(2020, 4, 30, leap_month=True) # 新建农历 2020年闰4月30日
print(date3.to_datetime()) #报日期超出范围的错误
date03 = lunar_date(2020, 4, 28, leap_month=True) # 新建农历 2020年闰4月28日
print(date03.to_datetime()) #2020-06-19 00:00:00
# 减法支持
new_lunar_date = lunar_date(2019, 1, 1) - 30 #减整数,得到差额天数的新农历对象
print(new_lunar_date)
new_lunar_date2 = lunar_date(2019, 1, 1) - lunar_date(2018, 1, 1) #两个lunar_date对象相减得到两个农历日期的差额
print(new_lunar_date2)
new_lunar_date3 = lunar_date(2019, 1, 1) - datetime(2019, 1, 1) # 减去阳历日期,得到农历日期和阳历日期之间的天数差额
print(new_lunar_date3)
# 加法支持
new_lunar_date4 = lunar_date(2019, 1, 1) + 30 # 加整数返回相隔天数以后的新农历对象
print(new_lunar_date4)
# 中文输出
new_lunar_date5 = lunar_date(2019, 1, 1)
print(new_lunar_date5.chinese())
# 当天的农历日期
print(lunar_date.today())
2、实现了 阳历日期转弄历日期的python方法
https://blog.csdn.net/qq_34160679/article/details/78713906
虽然是实现了阳历转农历,并不是我想要的转换函数,但我看他的转换函数写的不错,就复制来本地试了下,是好用的。
近期工作中遇到了节假日场景,而七夕节、中秋节、重阳节、端午节、清明节、春节这些都是农历的节日,对应到阳历日期并不是固定的。所以就很有必要有一个转换方法,实现农历日期到阳历日期的转换。已经有很多大牛对此做了实现,这里记录下亲测好用的方法。1、首推:简书上 “Python 农历公历相互转换”https://www.jianshu.com/p/272c5dfa3eef他在github上有发布模块,可以直接pip安装使用。并且在介绍页有使用方法示例,对于想快速使用、不关心实现细节的用户非常友好了..
最近,看到有个网友在豆瓣上求助,想通过提取身份证号码中的
日期
并将其
转换
为
公历
以确定生日,本文先通过
python
中Borax模块
实现
农历
和
公历
的互相
转换
,后面在通过pandas
实现
网友的要求。
关于borax的文档可以查阅[https://www.bookstack.cn/read/borax/docs-guides-lunardate.md](https://www.bookstack.cn/...
一般使用的万年历,只提供距今前后百年的日历。这是因为其所用的计算方法是一种简便的计算方法,适用范围较小。其次,天文学方法计算量大,不适合日常软件使用。但如果要进行历史研究,范围就超出常用日历,本文即
实现
计算任意
日期
的
农历
。
由于天文星历数据太大,本文的代码是直接利用
python
的PyEphem库。该库只提供了二分二至时间,没有24节气。但是也提供了任意时间的太阳黄经,可以利用此项计算24节气。
from borax.calendars.lunardate import LunarDate
today = LunarDate.today()
# 显示
农历
今日,即 七月初四
today
LunarDate(2020, 7, 4, 0)
today.animal
today.year
today.month
today.day
today.to_solar_date()
搜索了好几个
python
实现
的万年历多有部分时间有问题,好多是来自这个代码:
复制代码 代码如下:#!/usr/bin/env
python
# -*- coding: utf-8 -*-”’Usage: ccal Month [4-Digit-Year] or: ccal 4-Digit-Year Month
This
Python
script is to show Solar and Lunar calender at thesame time. You need to have
Python
(2.0 or above) installed.
Acceptable date ra
1. 因为考虑到繁体和简体字的原因,所以本库不以硬编码的形式显示结果
简体示例:
Gan = [“甲”, “乙”, “丙”, “丁”, “戊”, “己”, “庚”, “辛”, “壬”, “癸”]
Zhi = [“子”, “丑”, “寅”, “卯”, “辰”, “巳”, “午”, “未”, “申”, “酉”, “戌”, “亥”]
ShX = [“鼠”, “牛”, “虎”, “兔”, “龙”, “蛇”, “马”, “羊”, “猴”, “鸡”, “狗”, “猪
好的,我可以帮您
实现
一个
Python
万年历,包含
农历
。您需要先安装
一个
Python
库 called lunarcalendar。您可以使用 pip 命令来安装它:
```
python
pip install lunarcalendar
然后,您可以使用以下代码来
实现
一个
简单的万年历(包含
公历
和
农历
):
```
python
import calendar
from lunarcalendar import Converter, Solar, Lunar
def get_calendar(year, month):
获取指定月份的
公历
和
农历
日历
# 获取
公历
的月历
cal = calendar.monthcalendar(year, month)
# 获取
农历
的月历
lunar_cal = []
for week in cal:
lunar_week = []
for day in week:
if day == 0:
lunar_week.append((0, ''))
continue
# 将
公历
日期
转换
为
农历
日期
solar_date = Solar(year, month, day)
lunar_date = Converter.solar2lunar(solar_date)
# 获取
农历
日期
的中文表示
lunar_day = Lunar(lunar_date.year, lunar_date.month, lunar_date.day)
lunar_day_str = lunar_day.day_full
lunar_week.append((day, lunar_day_str))
lunar_cal.append(lunar_week)
return cal, lunar_cal
# 测试代码
year = 2022
month = 12
cal, lunar_cal = get_calendar(year, month)
print('{}年{}月'.format(year, month))
print('
公历
:')
print(calendar.month_name[month])
print(calendar.weekheader(2))
for week in cal:
print(week)
print('
农历
:')
for week in lunar_cal:
for day in week:
print('{:<2} '.format(day[1]), end='')
print()
这个程序将打印出给定年份和月份的
公历
和
农历
日历。您可以根据需要进行修改。