cnlunar:让Python轻松玩转中国农历!无需数据库的黄历算法神器
·
cnlunar:让Python轻松玩转中国农历!无需数据库的黄历算法神器
cnlunar是一款基于Python的开源农历算法项目,无需数据库环境,以《钦定协纪辨方书》为核心,提供农历、黄历、二十四节气、节假日、星次、每日凶煞、值神、农历建除十二神、宜忌、彭祖百忌、五行、二十八星宿、天干地支、生辰八字、时辰凶吉等丰富功能,让开发者和普通用户都能轻松玩转中国农历。
🌟 为什么选择cnlunar?
精准可靠的算法核心
传统农历计算常采用"通用寿星公式",存在200年内22个矫正值的缺陷,容易导致节气日期、八字月柱等数据错误。cnlunar摒弃这一经验公式,直接采用香港天文台1901-2100年的天文观测数据,通过向量压缩技术存储节气信息,确保阴阳合历计算的科学性和准确性。
丰富全面的文化传承
项目深度整合《四库全书·钦定协纪辨方书》内容,不仅实现公历农历转换、二十四节气计算等基础功能,还包含:
- 传统黄历元素:每日宜忌、十二神、二十八星宿、彭祖百忌
- 命理相关:八字四柱、天干地支、纳音五行
- 民俗文化:农历节日、时辰凶吉、中医时辰经络
轻量便捷的使用体验
- 零数据库依赖:所有数据通过十六进制压缩存储于代码中,无需额外配置
- 跨平台兼容:支持Windows、macOS、Linux系统,可用于web和移动端开发
- 极简安装:一条命令即可完成部署,提供详细demo用例
🚀 快速上手教程
安装步骤
通过pip命令快速安装:
pip install cnlunar
基础使用示例
import datetime
import cnlunar
# 初始化农历对象(支持指定日期和八字算法类型)
a = cnlunar.Lunar(datetime.datetime(2022, 11, 14, 10, 30), godType='8char')
# 获取核心农历信息
print({
'农历数字': (a.lunarYear, a.lunarMonth, a.lunarDay, '闰' if a.isLunarLeapMonth else ''),
'农历': f'{a.lunarYearCn} {a.year8Char}[{a.chineseYearZodiac}]年 {a.lunarMonthCn}{a.lunarDayCn}',
'今日节气': a.todaySolarTerms,
'下一节气': (a.nextSolarTerm, a.nextSolarTermDate, a.nextSolarTermYear),
'今年节气表': a.thisYearSolarTermsDic
})
💡 核心功能详解
1. 农历历法基础功能
- 公历农历互转:精确计算1901-2100年间任意日期的农历表达
- 节气查询:获取今日节气、下一节气及全年节气表,如
a.todaySolarTerm返回当前节气 - 闰月判断:通过
a.isLunarLeapMonth属性识别闰月
2. 传统黄历文化功能
- 每日宜忌:基于《钦定协纪辨方书》算法,通过
a.goodThing和a.badThing获取宜事忌事 - 值神凶煞:包含建除十二神、二十八星宿等传统值神信息
- 彭祖百忌:提供每日宜忌的传统文本解释
3. 八字命理相关功能
支持两种八字月柱算法:
- 港式(通书配图)算法(默认)
- 通书原文文字农历月份算法
可通过godType参数切换,如Lunar(..., godType='lunar')使用农历月份算神煞。
🛠️ 项目结构解析
核心模块组织清晰,便于二次开发:
- lunar.py:核心模块,实现农历历法计算、传统数据输出,保留大量《钦定协纪辨方书》原文注释
- config.py:无数据库存储农历、二十四节气等配置信息
- solar24.py:二十四节气数据解压缩模块
- demo.py:快速上手代码模板,展示主要功能用法
📚 权威参考与数据来源
- 历法数据:香港天文台《公历农历对照表》(1901-2100)
- 传统宜忌:《四库全书·钦定协纪辨方书》卷九至卷十一
- 节气算法:采用向量压缩法存储香港天文台观测数据,替代传统寿星公式
🔧 进阶应用场景
- 传统文化App开发:轻松集成农历、黄历功能
- 民俗研究工具:提供准确的历法数据支持
- 传统节日提醒:结合holidays.py实现农历节日自动提醒
- 中医养生应用:利用时辰经络数据开发养生建议系统
🤝 参与贡献
项目采用GPL3.0开源协议,欢迎开发者参与优化:
- 克隆仓库:
git clone https://gitcode.com/gh_mirrors/cn/cnlunar - 参考demo.py了解使用方法
- 通过GitHub提交PR或Issue
cnlunar致力于为Python社区提供最精准、最全面的农历算法支持,让传统文化通过技术手段得以传承和创新。无论是开发传统应用还是进行文化研究,cnlunar都能成为您的得力助手!
更多推荐



所有评论(0)