相关文章推荐
强健的鸵鸟  ·  WARNING: RXTX Version ...·  1 月前    · 
逃课的紫菜汤  ·  ArrayNode (The Adobe ...·  3 月前    · 
心软的马克杯  ·  Linux-IO函数 - 简书·  1 年前    · 

近期工作中遇到了节假日场景,而七夕节、中秋节、重阳节、端午节、清明节、春节这些都是农历的节日,对应到阳历日期并不是固定的。

所以就很有必要有一个转换方法,实现农历日期到阳历日期的转换。

已经有很多大牛对此做了实现,这里记录下亲测好用的方法。

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() 这个程序将打印出给定年份和月份的 公历 农历 日历。您可以根据需要进行修改。