python通过lunarcalendar库使用农历日期
农历日期库
介绍
lunarcalendar是一个处理农历日期的库
可以简单通过pip安装:pip install lunarcalendar
lunarcalendar的github地址
从公历转为农历
from lunarcalendar import Converter, Solarsolar = Solar(2024, 11, 1)
lunar = Converter.Solar2Lunar(solar)print(lunar)print(lunar.year) # 农历年
print(lunar.month) # 农历月
print(lunar.day) # 农历日print(lunar.isleap) # 是否闰月
从农历转为公历
from lunarcalendar import Converter, Lunarlunar = Lunar(2025, 2, 2, isleap=False)solar = Converter.Lunar2Solar(lunar)print(solar)print(solar.year) # 公历年
print(solar.month) # 公历月
print(solar.day) # 公历日print(solar.to_date()) # 公历日期
节日与节气
遍历某年全部节日
from lunarcalendar.festival import festivalsfor fest in festivals:print(fest.get_lang("zh"), fest(2025))
遍历某年全部的节气
from lunarcalendar.solarterm import solartermsfor st in solarterms:print(st.get_lang("zh"), st(2025))
在这种情况下,就可以很容易的根据节日/节气名,找到对应的节日,如
from lunarcalendar.festival import festivalsfor fest in festivals:if fest.get_lang("zh") == "春节":for year in range(2025, 2036):print(f"{year}年的春节在:{fest(year)}")
这样,我们就可以轻松的看到每一年的春节都在什么时候了。
lunar-find
搜索节日与节气
安装lunarcalendar以后,同时会获得一个lunar-find工具,该工具可以搜索节日与节气,可以在不需要额外编写代码的情况下,查询到节日与节气。
如lunar-find 春节
,将显示:春节 on 2024: 2024-02-10
当然,2024年春节早就过完了,显示2024年春节没有什么意义,我想要看2025年春节怎么办呢?
只需要简单的添加年份即可,如lunar-find 春节 2025
,将显示:春节 on 2025: 2025-01-29
那么,一些与阴历无关的节日,如情人节,儿童节,包括一些节气,立春,冬至,同样也可以轻松得到结果。
搜索全部节日
搜索全部:lunar-find all
搜索全部节日:lunar-find festival
搜索全部节日(使用中文):lunar-find 节日
搜索全部节气:lunar-find solarterm
搜索全部节气(使用中文):lunar-find 节气
当我们使用:lunar-find festival 2025
,就能够得到以下结果:
> 元旦 on 2025: 2025-01-01
> 腊八节 on 2025: 2025-01-07
> 小年 on 2025: 2025-01-22
> 除夕 on 2025: 2025-01-28
> 春节 on 2025: 2025-01-29
> 破五节 on 2025: 2025-02-02
> 元宵节 on 2025: 2025-02-12
> 情人节 on 2025: 2025-02-14
> 龙抬头 on 2025: 2025-03-01
> 妇女节 on 2025: 2025-03-08
> 植树节 on 2025: 2025-03-12
> 清明节 on 2025: 2025-04-04
> 复活节 on 2025: 2025-04-20
> 劳动节 on 2025: 2025-05-01
> 青年节 on 2025: 2025-05-04
> 母亲节 on 2025: 2025-05-11
> 护士节 on 2025: 2025-05-12
> 端午节 on 2025: 2025-05-31
> 儿童节 on 2025: 2025-06-01
> 父亲节 on 2025: 2025-06-15
> 七夕节 on 2025: 2025-08-29
> 中元节 on 2025: 2025-09-06
> 教师节 on 2025: 2025-09-10
> 国庆节 on 2025: 2025-10-01
> 中秋节 on 2025: 2025-10-06
> 重阳节 on 2025: 2025-10-29
> 万圣夜 on 2025: 2025-10-31
> 寒衣节 on 2025: 2025-11-20
> 感恩节 on 2025: 2025-11-27
> 冬节 on 2025: 2025-12-21
> 平安夜 on 2025: 2025-12-24
> 圣诞节 on 2025: 2025-12-25
农历日期格式化
农历日期格式类
通常情况下,我们描述农历日期的时候,会说“正月初一”,“八月十五”,因此,我们还需要一种方法,将农历的数字日期对应到我们常说的日期,以实现如日历等功能。
from lunarcalendar import Converter, Solarclass LunarStr:months = ["正月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]days = ["初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十","十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十","廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十"]@classmethoddef from_year_month_day(cls, year, month, day):solar = Solar(year, month, day)lunar = Converter.Solar2Lunar(solar)return cls(lunar)def __repr__(self):return f"LunarStr(year={self.year}, month={self.month}, day={self.day})"def __init__(self, lunar):self.year = lunar.yearself.month = lunar.monthself.day = lunar.daytry:self.month_str = self.months[lunar.month - 1]self.day_str = self.days[lunar.day - 1]except IndexError:raise ValueError("月份或日期超出有效范围!")if lunar.isleap:self.month_str = "闰" + self.month_strdef get_calendar_date_str(self):if self.day == 1:return self.month_strelse:return self.day_strdef get_date_str(self):return self.month_str + self.day_str
使用方法
我们可以通过创建一个农历日期,然后得到对应的农历日期表达方式。
from lunarcalendar import Converter, Solarsolar = Solar(2024, 11, 1)
lunar = Converter.Solar2Lunar(solar)
date_str = LunarStr(lunar).get_date_str()
print(date_str)
也可以直接使用年月日,来直接得到农历日期的常用表达方式。
date_str = LunarStr.from_year_month_day(2024, 11, 1).get_date_str()
print(date_str)
相关文章:

python通过lunarcalendar库使用农历日期
农历日期库 介绍 lunarcalendar是一个处理农历日期的库 可以简单通过pip安装:pip install lunarcalendar lunarcalendar的github地址 从公历转为农历 from lunarcalendar import Converter, Solarsolar Solar(2024, 11, 1) lunar Converter.Solar2Lunar(sola…...
MySQL高级--范式与反范式
MySQL高级–范式与反范式 1. 背景 首先让我们来简单了解什么是范式与反范式 如下有部门表(包含:雇员、部门、部门领导) EMPLOYEEDEPARTMENTHEADJonesAccountingJonesSmithEngineeringSmithBrownAccountingJonesGreenEngineeringSmith 我们…...
实验05多重循环---7-02 打印矩形图案
打印一个 m 行 n 列的字符 * 组成的矩形图案。 输入格式: 输入在一行中给出空格隔开的两个整数,分别表示行数 m 和列数 n,其中 m 和 n 分别满足 1≤m≤10,1≤n≤20。 输出格式: 由字符 * 组成的 m 行 n 列的矩形图案。 输入样例: 3 5 输出…...

明源地产ERP WFWebService.asmx 反序列化RCE漏洞复现
0x01 产品简介 明源地产ERP是一款专为房地产行业设计的企业资源规划(ERP)系统,系统集成了项目管理、财务管理、客户关系管理、营销管理等多个模块,旨在帮助房地产企业提升运营效率、降低成本和提高客户满意度。它充分考虑了房地产行业的特性和需求,通过整合企业的各个业务…...
学习笔记:黑马程序员JavaWeb开发教程(2024.11.4)
5.8 请求响应-请求-案例 数据保存在emp.xml文件中,解析XML的工具类XMLParserUtils,其中使用了dom4j的接口,因此要在pom.xml文件中引入dom4j的依赖,用于解析XML文件,实体类Emp用于封装服务器解析的数据 前端页面文件…...

开源自托管数据管理工具全面指南
在大数据时代,企业和组织面临着海量的数据挑战。随着应用程序复杂性的提高以及用户需求不断演变,开发团队需要高效地处理大量数据,以便快速做出决策。然而,在众多信息中,如何识别并有效利用那些对决策至关重要的数据呢…...

护工系统|护工陪护软件|护工系统设计
在现代社会,护工系统的开发成为提升医疗服务质量和效率的重要手段。页面设计作为系统开发的关键环节,必须充分考虑到实用性与用户体验。以下是对护工系统开发页面设计功能的详细阐述: 一、用户登录与权限管理 页面设计首先应设置用户登录模块…...
电商领域软件系统实战:基于TiDB的分布式数据库应用
在电商领域,数据的快速增长和复杂性对数据库系统提出了更高要求。TiDB作为一款开源的分布式数据库,以其兼容MySQL协议、水平扩展能力强、高可用性等特性,在电商系统中得到了广泛应用。本文将围绕TiDB在电商领域的应用,详细介绍其搭…...

鸢尾博客项目开源
1.博客介绍 鸢尾博客是一个基于Spring BootVue3 TypeScript ViteJavaFx的客户端和服务器端的博客系统。项目采用前端与后端分离,支持移动端自适应,配有完备的前台和后台管理功能。后端使用Sa-Token进行权限管理,支持动态菜单权限,服务健康…...

Google封号潮来袭!跨境卖家如何解封?
近期,不少小伙伴在苦苦哀嚎:Google账号又又又又被封啦!对于跨境业务在线的小伙伴来说来说,是一个比较严重的问题。但不必过于担心,以下是一些可能的原因和相应的解决方法,耐心看完,也许对你的账号解封有帮助…...

路径规划 | ROS中多个路径规划算法可视化与性能对比分析
目录 0 专栏介绍1 引言2 禁用局部规划器3 路径规划定性对比实验3.1 加载路径规划器和可视化插件3.2 设置起点和终点3.3 选择规划器规划3.4 不同规划器对比3.5 路径保存和加载 4 路径规划定量对比实验4.1 计算规划耗时4.2 计算规划长度4.3 计算拓展节点数4.4 计算路径曲率4.5 计…...

使用 PyCharm 构建 FastAPI 项目:零基础入门 Web API 开发
使用 PyCharm 构建 FastAPI 项目:零基础入门 Web API 开发 本文提供了一份完整的 FastAPI 入门指南,涵盖从环境搭建、依赖安装到创建并运行一个简单的 FastAPI 应用的各个步骤。通过 FastAPI 和 Uvicorn,开发者可以快速构建现代化的 Web API…...
Prim算法与Dijstra算法
注:参考如下文章和视频 不能说毫不相干,简直是一模一样(Prim vs Dijkstra) 普里姆和迪杰斯特拉太像了,他们有什么区别? Prim算法和Dijkstra算法区别 文章目录 总结数组元素的更新两种算法的完整代码 普里姆算法算法步骤算法描…...

水经微图IOS版5.6.1发布,新增图源二维码分享并修订徒步模式功能
随时随地,微图一下! 水经微图(以下称“微图”)IOS版5.6.1发布,本次升级主要新增了图源二维码分享功能,以及修订过往足迹的徒步模式功能。 当前版本 当前版本号为:5.6.1 如果你发现该版本中存…...

复现第三周
1.eval执行 1)打开题目 简单进行代码审计,而题目又为eval函数说明这里eval() 会执行传入的任意代码,可以通过 cmd 作为参数执行任意 PHP 代码,这里相当于用cmd作为参数来执行url头命令 2)在url头输入命令cmdsystem("ls&quo…...
Django---数据库(多表关联)
在Django中操作数据库并实现多表关联,主要是通过定义模型(Models)及其关系,然后利用Django ORM(Object-Relational Mapping)执行数据库操作。 定义模型及其关系 首先,需要在models.py文件中定…...
2024系统架构师---论软件可靠性设计及其应用论文
可靠性 软件可靠性是指软件系统在一定的时间内持续无故障运行的能力。 可靠性通常用平均失效等待时间(MTTF)和平均失效间隔时间(MTBF)来衡量。 影响可靠性的因素 从技术的角度来看,影响软件可靠性的主要因素如下。…...

SpringBoot在线教育系统:云部署策略
6系统测试 6.1概念和意义 测试的定义:程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为: 目的:发现程序的错误; 任务:通过在计算机上执行程序,暴露程序中潜在的错误。 另一个…...
Zabbix 6.0 部署
目录 一、序章 二、zabbix概念 2.1 zabbix 是什么? 2.2 zabbix 监控原理: 2.3 Zabbix 6.0 新特性: 2.3.1 Zabbix server高可用防止硬件故障或计划维护期的停机 2.3.2 Zabbix 6.0 LTS新增Kubernetes监控功能,可以在Kubernet…...
用Python遍历输出烟感名称和状态
为了使用Python遍历输出烟感名称和状态,您需要首先从SNMP代理(如网络设备或硬件设备)获取这些值。为此,您可以使用第三方库如pysnmp,它允许您轻松地与SNMP代理通信。 首先,您需要安装pysnmp库,…...

第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

DBLP数据库是什么?
DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...