Git Product home page Git Product logo

opn48 / cnlunar Goto Github PK

View Code? Open in Web Editor NEW
413.0 413.0 121.0 533 KB

农历,**农历历法项目,无需数据库环境,以《钦定协纪辨方书》为核心的python3 农历、黄历、二十四节气、节假日、星次、每日凶煞、每日值神、农历建除十二神、农历每日宜忌、彭祖百忌、每日五行、二十八星宿、天干地支、农历生辰八字、时辰凶吉等开源项目。

License: GNU General Public License v3.0

Python 100.00%
calendar cnlunar lunar lunarcalendar python python3

cnlunar's People

Contributors

cuba3 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cnlunar's Issues

好像发现一个bug

日期 : 2020-06-12 00:00:00
农历数字 : (2020, 68, 21)

我设置6月份的时候,农历数字就会变成这样~~~7月好像又正常~其他月份有没有问题就不知道了
@cuba3

错误信息

TypeError: 'module' object is not callable

提示错误,请教大佬是什么问题?

时辰的吉凶问题

工具非常完善了,但每个时辰的吉凶这个是不是可以考虑加上?

关于二十四节气数据数据说明

将全年二十四节气数据-最小公差向量可得:

[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 的数据。

2个问题

1.年干支切换以立春节为准,不是农历新年;2022年2月4日04:50:36前为辛丑年辛丑月丁亥日,之后为壬寅年壬寅月丁亥日;
2.换月最好能精确到具体时间,除立春外,其他节气到点之前请按上个月纪月。

计算错误问题

1993, 2, 3, 19, 30
八字 : 癸酉 癸丑 乙卯 丙戌
今日节气 : 无
下一节气 : ('立春', (2, 4), 1993)

实际上年干是壬申,因为还没有立春

大佬,上一个节气怎么获取?

看到下一个节气有nextSolarTermDate,和nextSolarTermYear,不知道上一个节气怎么获取呢?八字推大运的时候有反向拿的case。
有没有计划增加个last方法呢?ღ( ´・ᴗ・` )比心

v0.09 install problem fixed

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(),
)

宜忌抵消后相克的相关实现

能不能实现一下,宜忌抵消后相克,岁德、月德、凤凰麒麟压朱雀白虎、三丧、月破、岁破、重丧、天罡等算法啊?

每日宜忌的算法问题

作者程序的结果:
农历:二零二零 庚子[鼠]年 冬月小廿五
宜:['诸事不宜']
忌:['诸事不宜']

但在别的平台查询的结果大多是:
宜:祭祀、冠笄、嫁娶、会友、认养、裁衣、结网
忌:造庙、移徙、入宅、作灶、安葬

请问是算法不同的原因导致的吗?

每一天都是 宜嫁娶,正常吗?

a,想看下哪天适合结婚,但是每天都宜嫁娶

b,出行 嫁娶 开市 祭祀 祈福 动土,这几个重复好像感觉很多,不会是程序写错了吧?

c,还有比如“进人”这个(不止进人一个),我找很久,只有忌进人的日子,好像没有宜进人的日子(找不到),囧

八字立春算法下,输出多年的数据,发现年干或许存在异常,可按demo输出200年数据验证

如图所示,
截图_20240405075429

代码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}")
`

节气不准

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

2020年6月20日对应的农历结果是五月初三?难道不是四月二十九吗?

请看转换结果。

{"日期": "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", "吉神方位": ["喜神西北", "财神东北", "福神西南", "阳贵西南", "阴贵正北"], "今日胎神": "碓磨厕房内北", "神煞宜忌": [[["岁德合", "六合", "不将", "不守塚", "吉期", "兵宝"], ["勾陈", "三娘煞", "四离", "制日"]], [["结婚姻", "沐浴", "剃头", "修造", "上官", "进人口", "经络", "纳财", "扫舍宇", "破土", "安葬", "选将", "纳畜", "赴任", "宴会", "整手足甲", "安抚边境", "立券交易", "入宅", "出师", "施恩", "整容", "搬移", "酝酿", "解除", "举正直", "纳采", "临政"], ["栽种"]]], "今日吉神": ["岁德合", "六合", "不将", "不守塚", "吉期", "兵宝"], "今日凶煞": ["勾陈", "三娘煞", "四离", "制日"], "宜": ["结婚姻", "沐浴", "剃头", "修造", "上官", "进人口", "经络", "纳财", "扫舍宇", "破土", "安葬", "选将", "纳畜", "赴任", "宴会", "整手足甲", "安抚边境", "立券交易", "入宅", "出师", "施恩", "整容", "搬移", "酝酿", "解除", "举正直", "纳采", "临政"], "忌": ["栽种"], "时辰经络": "胆"}

新版出现一个大bug

@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

报告一个不匹配的日期与八字

输入阳历:1991年4月5日3时
输出八字:辛未 壬辰 乙巳 戊寅

但与多个八字排盘软件显示,应该是:辛未 辛卯 乙巳 戊寅
月柱好像错了,不应该是”壬辰“,应该是"辛卯"

请有空查下孰对孰错,谢谢!

干支错误

干支历以立春时刻为一年之始

2024-02-04 立春,应为 甲辰[龙] 年

日期    :        2024-02-04 10:30:00
农历数字 :       (2023, 12, 25, '')
农历    :        二零二三 癸卯[兔]年 腊月大廿五
星期    :        星期日
今日节日 :       ('', '世界抗癌日', '')
八字    :        癸卯 丙寅 戊戌 丁巳
今日节气 :       立春
下一节气 :       ('雨水', (2, 19), 2024)

Screenshot from 2024-01-16 17-09-17

胎神是否有误?

  ----天干六甲胎神歌----
  甲己之日占在門,乙庚碓磨休移动。
  丙辛廚灶莫相干,丁壬倉庫忌修弄。
  戊癸房床若移整,犯之孕妇堕孩童。

  ----地支六甲胎神歌----
  子午二日碓须忌,丑未廁道莫修移。
  寅申火爐休要动,卯酉大門修当避。
  辰戌雞棲巳亥床,犯着六甲身堕胎。

img

发现代码中的胎神取法与上边口诀不一致?
戊辰日: 取得的是房床厕外正南
按上表中应为:房床棲外正南
不知是否有另外出处?

PS: 本人用Typescript写了一个类似功能的库(lunisolar),
希望多交流,相互改进。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.