opn48 / cnlunar Goto Github PK
View Code? Open in Web Editor NEW农历,**农历历法项目,无需数据库环境,以《钦定协纪辨方书》为核心的python3 农历、黄历、二十四节气、节假日、星次、每日凶煞、每日值神、农历建除十二神、农历每日宜忌、彭祖百忌、每日五行、二十八星宿、天干地支、农历生辰八字、时辰凶吉等开源项目。
License: GNU General Public License v3.0
农历,**农历历法项目,无需数据库环境,以《钦定协纪辨方书》为核心的python3 农历、黄历、二十四节气、节假日、星次、每日凶煞、每日值神、农历建除十二神、农历每日宜忌、彭祖百忌、每日五行、二十八星宿、天干地支、农历生辰八字、时辰凶吉等开源项目。
License: GNU General Public License v3.0
TypeError: 'module' object is not callable
提示错误,请教大佬是什么问题?
如题,2.4日立春之后依然显示癸卯年。难道是因为今年立春早于农历新年的原因?
日期 : 2020-06-12 00:00:00
农历数字 : (2020, 68, 21)
我设置6月份的时候,农历数字就会变成这样~~~7月好像又正常~其他月份有没有问题就不知道了
@cuba3
{'公历日期': datetime.date(2023, 5, 9), '农历年 份': '二零二三', '农历月份': '三月小', '农历日': '二十'}
('天愿', '甲子癸未甲午甲戌乙酉丙子丁丑戊午甲寅丙辰辛卯戊辰'[men], d,
1.是不是格式存在错误
2.我在百度搜索 天愿日
http://ygkyfs.com/wap.php?action=article&id=28077
发现数据也存在差异,不知道那个是正确的
宜 : ['诸事不宜']
忌 : ['诸事不宜']
代码demo如下
`
import datetime
import cnlunar
import pandas as pd
import os
start_date = datetime.datetime(1901, 11, 6, 0, 0)
end_date = datetime.datetime(1903, 12, 10, 0, 0)
delta = datetime.timedelta(days=1)
calendar = []
while start_date <= end_date:
# a = cnlunar.Lunar(start_date, godType='8char') # 常规算法,即在正月初一切换年干生肖
a = cnlunar.Lunar(start_date, godType='8char', year8Char='beginningOfSpring') # 八字立春切换算法。
dic = {
'公历日期': a.date,
'农历日期数字': '%s-%s-%s' % (a.lunarYear, a.lunarMonth, a.lunarDay),
'农历日期': '%s%s' % (a.lunarMonthCn, a.lunarDayCn),
'星期': a.weekDayCn,
'年干支': a.year8Char,
'月干支': a.month8Char,
'日干支': a.day8Char,
# '时干支': a.twohour8Char,
'今日节气': a.todaySolarTerms,
'下一节气': (a.nextSolarTerm, a.nextSolarTermDate, a.nextSolarTermYear),
'今年节气表': a.thisYearSolarTermsDic,
}
calendar.append(dic)
start_date += delta
print(start_date)
df = pd.DataFrame(calendar)
file_name = "万年历输出表.xlsx"
sheet_name = datetime.datetime.now().strftime("%H-%M-%S")
if os.path.exists(file_name):
# 如果文件已存在,读取原有数据
with pd.ExcelWriter(file_name, mode='a') as writer:
df.to_excel(writer, sheet_name=sheet_name, index=False)
print(f"已在 {file_name} 中添加新的sheet表:{sheet_name}")
else:
# 如果文件不存在,直接保存
df.to_excel(file_name, sheet_name=sheet_name, index=False)
print(f"已在 {file_name} 中创建新的sheet表:{sheet_name}")
`
文件 : https://github.com/OPN48/cnlunar/lunar.py ;
# 凡德合、赦愿、月恩、四相、时德等日,不注忌进人口、安床、经络、酝酿、开市、立券、交易、纳财、开仓库、出货财。如遇德犹忌,及从忌不从宜之日,则仍注忌。
temp = False
for i in self.goodGodName:
if i in ['岁德合', '月德合', '天德合', '天赦', '天愿', '月恩', '四相', '时德']:
temp = True
break
if temp:
# 如遇德犹忌,及从忌不从宜之日,则仍注忌。
if i not in deIsBadThing or thingLevel != 2:
self.badThing = rfRemove(self.badThing, ['进人口', '安床', '经络', '酝酿', '开市', '立券交易', '纳财', '开仓库', '出货财'])
其中
if i not in deIsBadThing or thingLevel != 2:
i
是 ['岁德合', '月德合', '天德合', '天赦', '天愿', '月恩', '四相', '时德'] 集合中的一个与deIsBadThing
集合 不是一种类型; 判断条件永远都为 true; 所以这儿可以删除?还是将deIsBadThingDic
误写成deIsBadThing
?
# 凡四忌、四穷只忌安葬。如遇鸣吠、鸣吠对亦不注宜破土、启攒。
if '四忌' in self.badGodName or '四忌' in self.badGodName:
if '四忌' in self.badGodName or '四忌' in self.badGodName:
这行填写错误 其中一个四忌
应写成四穷
,即:
if '四忌' in self.badGodName or '四穷' in self.badGodName:
我目前需要计算未来几年的节假日。然而,官方公布的节假日只会在每年的10月左右公布下一年的节假日。
在每年10月前,是不知道下一年的节假日的。
直到我发现这个项目支持到2100年的节假日,实测下来满足了我的需求!
非常感谢!
从文档字里行间中,感受到了作者用心了
self.lunarMonth = _leap_month # (_leap_month << 4) | self.lunarMonth
self.isLunarLeapMonth = True
致: 感谢作者提供此好用的库
重新比较复杂,能不能写个完整的demo.py。
这样新手方便看
problem during installation:
File "", line 9, in
UnicodeDecodeError: 'gbk' codec can't decode byte 0xb4 in position 89: illegal multibyte sequence
fix setup.py by adding code: encoding='utf-8' in 'long_description=' as below:
from setuptools import setup
setup(
name='cnlunar',
version='0.0.9',
packages=['cnlunar'],
url='https://github.com/OPN48/cnLunar',
author='cuba3',
author_email='[email protected]',
long_description=open('README.rst',encoding='utf-8').read(),
)
目前看代码好像只接受一个阳历日期
请看转换结果。
{"日期": "2020-06-20 23:30:00", "农历数字": [2020, 5, 3, ""], "农历": "二零二零 庚子[鼠]年 五月小初三", "星期": "星期六", "今日节日": ["", "", ""], "八字": "庚子 壬午 乙未 丙子", "今日节气": "无", "下一节气": ["夏至", [6, 21], 2020], "今年节气表": {"小寒": [1, 6], "大寒": [1, 20], "立春": [2, 4], "雨水": [2, 19], "惊蛰": [3, 5], "春分": [3, 20], "清明": [4, 4], "谷雨": [4, 19], "立夏": [5, 5], "小满": [5, 20], "芒种": [6, 5], "夏至": [6, 21], "小暑": [7, 6], "大暑": [7, 22], "立秋": [8, 7], "处暑": [8, 22], "白露": [9, 7], "秋分": [9, 22], "寒露": [10, 8], "霜降": [10, 23], "立冬": [11, 7], "小雪": [11, 22], "大雪": [12, 7], "冬至": [12, 21]}, "季节": "仲夏", "今日时辰": ["丙子", "丁丑", "戊寅", "己卯", "庚辰", "辛巳", "壬午", "癸未", "甲申", "乙酉", "丙戌", "丁亥", "戊子"], "时辰凶吉": ["凶", "凶", "吉", "吉", "凶", "吉", "凶", "凶", "吉", "凶", "吉", "吉", "吉"], "生肖冲煞": "羊日冲牛", "星座": "双子座", "星次": "鹑首", "彭祖百忌": "乙不栽植 千株不长,未不服药 毒气入肠", "彭祖百忌精简": "乙不栽植
未不服药", "十二神": ["除", "勾陈", "黄道日"], "廿八宿": "胃土雉", "今日三合": ["猪", "兔"], "今日六合": "马", "今日五行": ["天干", "乙", "属木", "地支", "未", "属土", "纳音", "金", "属金", "廿八宿", "胃", "宿", "十二神", "除", "日"], "纳音": "砂中金", "九宫飞星": "957813462", "吉神方位": ["喜神西北", "财神东北", "福神西南", "阳贵西南", "阴贵正北"], "今日胎神": "碓磨厕房内北", "神煞宜忌": [[["岁德合", "六合", "不将", "不守塚", "吉期", "兵宝"], ["勾陈", "三娘煞", "四离", "制日"]], [["结婚姻", "沐浴", "剃头", "修造", "上官", "进人口", "经络", "纳财", "扫舍宇", "破土", "安葬", "选将", "纳畜", "赴任", "宴会", "整手足甲", "安抚边境", "立券交易", "入宅", "出师", "施恩", "整容", "搬移", "酝酿", "解除", "举正直", "纳采", "临政"], ["栽种"]]], "今日吉神": ["岁德合", "六合", "不将", "不守塚", "吉期", "兵宝"], "今日凶煞": ["勾陈", "三娘煞", "四离", "制日"], "宜": ["结婚姻", "沐浴", "剃头", "修造", "上官", "进人口", "经络", "纳财", "扫舍宇", "破土", "安葬", "选将", "纳畜", "赴任", "宴会", "整手足甲", "安抚边境", "立券交易", "入宅", "出师", "施恩", "整容", "搬移", "酝酿", "解除", "举正直", "纳采", "临政"], "忌": ["栽种"], "时辰经络": "胆"}
此项目是否需要联网?
看到下一个节气有nextSolarTermDate,和nextSolarTermYear,不知道上一个节气怎么获取呢?八字推大运的时候有反向拿的case。
有没有计划增加个last方法呢?ღ( ´・ᴗ・` )比心
作者程序的结果:
农历:二零二零 庚子[鼠]年 冬月小廿五
宜:['诸事不宜']
忌:['诸事不宜']
但在别的平台查询的结果大多是:
宜:祭祀、冠笄、嫁娶、会友、认养、裁衣、结网
忌:造庙、移徙、入宅、作灶、安葬
请问是算法不同的原因导致的吗?
我参考本代码,做了一个Dart package,以方便Dart/Flutter程序开发。
代码:https://github.com/m11v/chinese_lunar_calendar
并发布在Pub.dev: https://pub.dev/packages/chinese_lunar_calendar
可否加我一个推荐?
谢谢!
想看每个时辰喜神、财神、福神的方位,但是没有,能不能加个呢?
项目真的很棒,建议做成python包并发布
1.年干支切换以立春节为准,不是农历新年;2022年2月4日04:50:36前为辛丑年辛丑月丁亥日,之后为壬寅年壬寅月丁亥日;
2.换月最好能精确到具体时间,除立春外,其他节气到点之前请按上个月纪月。
工具非常完善了,但每个时辰的吉凶这个是不是可以考虑加上?
a,想看下哪天适合结婚,但是每天都宜嫁娶
b,出行 嫁娶 开市 祭祀 祈福 动土,这几个重复好像感觉很多,不会是程序写错了吧?
c,还有比如“进人”这个(不止进人一个),我找很久,只有忌进人的日子,好像没有宜进人的日子(找不到),囧
举个例子1993 0203 20:00 是壬申。0204 00:00依然应该是壬申 , 到4点左右才应该立春,走到癸酉,而不是简单的以天为界限
输入阳历:1991年4月5日3时
输出八字:辛未 壬辰 乙巳 戊寅
但与多个八字排盘软件显示,应该是:辛未 辛卯 乙巳 戊寅
月柱好像错了,不应该是”壬辰“,应该是"辛卯"
请有空查下孰对孰错,谢谢!
能不能实现一下,宜忌抵消后相克,岁德、月德、凤凰麒麟压朱雀白虎、三丧、月破、岁破、重丧、天罡等算法啊?
1993, 2, 3, 19, 30
八字 : 癸酉 癸丑 乙卯 丙戌
今日节气 : 无
下一节气 : ('立春', (2, 4), 1993)
实际上年干是壬申,因为还没有立春
@cuba3
2020年6月16日、18日、30日~~~7月1日.....(后面的没测,应该还有很多)
查看以上日期时候,程序崩溃,爆出错误
C:\Users\Administrator\Desktop\pyLunarCalendar-master>python date2LunarData.py Traceback (most recent call last): File "date2LunarData.py", line 39, in <module> '神煞宜忌':a.get_AngelDemon(), File "C:\Users\Administrator\Desktop\pyLunarCalendar-master\lunar.py", line 743, in get_AngelDemon goodBadGodAndThingDic = getTodayGoodBadThing(goodBadGodAndThingDic) File "C:\Users\Administrator\Desktop\pyLunarCalendar-master\lunar.py", line 737, in getTodayGoodBadThing dic[badThingKey] += godItem[4] IndexError: tuple index out of range
将全年二十四节气数据-最小公差向量可得:
[2,2, 1,1, 1,2, 2,3, 2,2, 2,1, 2,2, 2,2, 2,2, 2,2 2,1]
可按月份逆序储存为二进制:(12月.11月.10月...1月)
0110 1010 1010 1010 1010 0110 1010 1010 1001 1010 0101 1010
二十四节气数据-最小公差向量 后的数据只有 22 个。
其中第八个节气差值为3,但逆序存储表中未见有 0x11 的数据。
就是我用的是Linux系统,经量封装appimage
1、节气详细不到分钟或秒,会导致年,或月不准。
2、建议:可以从http://24jieqi.xixik.com/#anchor8 整理一下节气的时间数据,然后做各节气的判断。
/usr/bin/python3 /Users/zhao95/Documents/IOS/pyLunarCalendar-master/date2LunarData.py
八字月柱与八字日柱算神煞版本
日期 : 2021-12-19 17:47:50.566570
农历数字 : (2021, 11, 16, '')
农历 : 二零二一 辛丑[牛]年 冬月大十六
星期 : 星期日
今日节日 : ('', '', '')
八字 : 辛丑 庚子 辛丑 丁酉
今日节气 : 无
下一节气 : ('冬至', (12, 21), 2021)
今年节气表 : {'小寒': (1, 5), '大寒': (1, 20), '立春': (2, 3), '雨水': (2, 18), '惊蛰': (3, 5), '春分': (3, 20), '清明': (4, 4), '谷雨': (4, 20), '立夏': (5, 5), '小满': (5, 21), '芒种': (6, 5), '夏至': (6, 21), '小暑': (7, 7), '大暑': (7, 22), '立秋': (8, 7), '处暑': (8, 23), '白露': (9, 7), '秋分': (9, 23), '寒露': (10, 8), '霜降': (10, 23), '立冬': (11, 7), '小雪': (11, 22), '大雪': (12, 7), '冬至': (12, 21)}
季节 : 仲冬
今日时辰 : ['戊子', '己丑', '庚寅', '辛卯', '壬辰', '癸巳', '甲午', '乙未', '丙申', '丁酉', '戊戌', '己亥', '庚子']
时辰凶吉 : ['凶', '凶', '吉', '吉', '凶', '吉', '凶', '凶', '吉', '凶', '吉', '吉', '吉']
生肖冲煞 : 牛日冲羊
星座 : 射手座
星次 : 星纪
彭祖百忌 : 辛不合酱 主人不尝,丑不冠带 主不还乡
彭祖百忌精简 : 辛不合酱
丑不冠带
十二神 : ('除', '天德', '黄道日')
廿八宿 : 房日兔
今日三合 : ['蛇', '鸡']
今日六合 : 鼠
今日五行 : ['天干', '辛', '属金', '地支', '丑', '属土', '纳音', '土', '属土', '廿八宿', '房', '宿', '十二神', '除', '日']
纳音 : 壁上土
九宫飞星 : 279135684
吉神方位 : ['喜神西南', '财神正东', '福神西北', '阳贵东北', '阴贵正南']
今日胎神 : 厨灶厕房内南
神煞宜忌 : ((['岁德合', '六合', '不将', '地财', '阴德', '普护', '吉期', '兵宝'], ['天瘟', '义日']), (['祭祀', '出行', '结婚姻', '宴会', '嫁娶', '沐浴', '剃头', '上官', '进人口', '经络', '纳财', '扫舍宇', '安葬', '施恩', '搬移', '雪冤', '立券交易', '赴任', '纳采', '临政', '安抚边境', '入宅', '整容', '恤孤茕', '举正直', '整手足甲', '选将', '解除', '出师', '祈福'], ['冠带']))
今日吉神 : ['岁德合', '六合', '不将', '地财', '阴德', '普护', '吉期', '兵宝']
今日凶煞 : ['天瘟', '义日']
宜忌等第 : 无
宜 : ['祭祀', '出行', '结婚姻', '宴会', '嫁娶', '沐浴', '剃头', '上官', '进人口', '经络', '纳财', '扫舍宇', '安葬', '施恩', '搬移', '雪冤', '立券交易', '赴任', '纳采', '临政', '安抚边境', '入宅', '整容', '恤孤茕', '举正直', '整手足甲', '选将', '解除', '出师', '祈福']
忌 : ['冠带']
时辰经络 : 肾
Process finished with exit code 0
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.