{"id":47673043,"url":"https://github.com/hkargc/paipan","last_synced_at":"2026-04-02T13:03:13.049Z","repository":{"id":47585159,"uuid":"260392169","full_name":"hkargc/paipan","owner":"hkargc","description":"PHP JavaScript 农历公历干支历互转,万年历,四柱,六十甲子,属相,十二星座,二十四节气,支持从-1000到3000年间的八字排盘及大运推算,支持真太阳时,支持分析刑冲合害关系","archived":false,"fork":false,"pushed_at":"2026-03-25T04:16:32.000Z","size":1955,"stargazers_count":161,"open_issues_count":0,"forks_count":59,"subscribers_count":5,"default_branch":"master","last_synced_at":"2026-03-26T09:48:43.075Z","etag":null,"topics":["calendar","lunar-calendar","php"],"latest_commit_sha":null,"homepage":"https://hkargc.github.io/paipan/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"wtfpl","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hkargc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-05-01T06:11:51.000Z","updated_at":"2026-03-25T04:08:27.000Z","dependencies_parsed_at":"2024-05-17T03:24:53.401Z","dependency_job_id":"2cba5a01-aa04-48d7-8e31-a67f37daa677","html_url":"https://github.com/hkargc/paipan","commit_stats":null,"previous_names":["hkargc/paipan","hkargv/paipan"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/hkargc/paipan","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hkargc%2Fpaipan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hkargc%2Fpaipan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hkargc%2Fpaipan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hkargc%2Fpaipan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hkargc","download_url":"https://codeload.github.com/hkargc/paipan/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hkargc%2Fpaipan/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31306721,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["calendar","lunar-calendar","php"],"created_at":"2026-04-02T13:03:08.222Z","updated_at":"2026-04-02T13:03:13.022Z","avatar_url":"https://github.com/hkargc.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"PHP JavaScript 农历公历干支历互转,万年历,四柱,六十甲子,属相,十二星座,二十四节气\u003cbr /\u003e\n支持从-1000年至3000年间的八字排盘及大运推算,真太阳时排盘,分析刑冲合害关系\u003cbr /\u003e\n支持从-104年至2300年间的农历公历互转\u003cbr /\u003e\n-721年至2300年的公历农历与寿星万年历一致\u003cbr /\u003e\n\n算法原理和JS源码完全来自: http://www.bieyu.com/\u003cbr /\u003e\n结果比对及农历修正来自寿星万年历: http://www.nongli.net/sxwnl/\u003cbr /\u003e\n计算真太阳时所需要的经纬坐标数据: https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov\u003cbr /\u003e\n\n本项目所做的工作:\u003cbr /\u003e\na,整理 http://www.bieyu.com/ 的JavaScript源码,改编真太阳时算法,引入刑冲合害的计算\u003cbr /\u003e\nb,把 http://www.nongli.net/sxwnl/ 寿星万年历的农历模块搬过来,涉及节气和朔望月修正\u003cbr /\u003e\nc,比对上述两个项目的运算结果,确认误差在可接受范围内\u003cbr /\u003e\nd,把JavaScript完整地转成PHP实现\u003cbr /\u003e\n\n演示地址: https://hkargc.github.io/paipan/ \u003cbr /\u003e\n\n此工具类包含:\u003cbr /\u003e\n1,儒略日历\u003cbr /\u003e\n以公元前4713年1月1日12时为起点,每天(每廿四小时)加一的历法;\u003cbr /\u003e\n比如2020年1月1日12点的儒略日为2458850,2020年1月1日0点的儒略日为(2458850 - 0.5);\u003cbr /\u003e\n这种历法方便各种计算,比如已知起点日为周一可求得任一日期的星期,已知起点日的干支可求得任一日期的干支\u003cbr /\u003e\n\n2,公历(阳历,格里历,西历)\u003cbr /\u003e\n以地球绕太阳公转计算的历法;\u003cbr /\u003e\n用公式可直接求得两分两至(春分秋分夏至冬至);\u003cbr /\u003e\n公转是椭圆轨道,把这个椭圆均分为24等分,可求得中国的二十四节气;12等分则为西方的十二星座;\u003cbr /\u003e\n此工具计算出的时间点误差在20秒内;\u003cbr /\u003e\n已知2020年春分点为3月20日11点49分57秒,则算法认为57秒前是双鱼座,57秒后是白羊座,是否按此计算请自行斟酌;\u003cbr /\u003e\n每月两节不变更,最多相差一两天.上半年来六廿一,下半年是八廿三 这里的六廿一和八廿三说的是公历;\u003cbr /\u003e\n\n3,阴阳历(农历,民间称阴历)\u003cbr /\u003e\n严格地说,以月球绕地一周为一个月计算的历法为阴历;\u003cbr /\u003e\n如果这样,阴历跟二十四节气的时间差就越来越大,我们可能要在夏季过大年初一;\u003cbr /\u003e\n也许人们为了能固定在立春前后吃上年夜饭(May be...),引入闰月的概念,使之与公转齐平,所以农历考虑了月亮又考虑了太阳,为阴阳历;\u003cbr /\u003e\n陰曆正月與置閏这一段很难理解,请参看 http://www.bieyu.com/\u003cbr /\u003e\n\n4,干支历\u003cbr /\u003e\n这种历法现在可能多用于命理学和历史研究领域,与二十四节气相关;\u003cbr /\u003e\n由于一年只有12个月而不是60个月,一天只有12小时而不是60小时,所以合法的四柱并不是简单的排列组合;\u003cbr /\u003e\n年柱跟月柱有固定的关系:甲己之年丙作首,乙庚之歲戊為頭,丙辛歲首尋庚起,丁壬壬位順行流,若言戊癸何方發,甲寅之上好追求.\u003cbr /\u003e\n日柱跟时柱也有固定关系:甲己還加甲,乙庚丙作初,丙辛從戊起,丁壬庚子屬,戊癸何方發,壬子是真途;\u003cbr /\u003e\n所以不存在甲子年甲子月甲子日甲子时这么个时间.\u003cbr /\u003e\n八字组合共有518400种(不分早晚子时),且一個八字出現後,至少要60年後才会再出現,最多要240年後才又出現;\u003cbr /\u003e\n已知2020立春点为2月4日17时3分44秒,44秒前为己亥年,44秒后为庚子年;\u003cbr /\u003e\n已知2020驚蟄为3月5日10时57分22秒,22秒前为戊寅月,22秒后为己卯月;\u003cbr /\u003e\n是否按此计算请自行斟酌,尤其是要用在命理学上的时候;\u003cbr /\u003e\n\n5,真太阳时\u003cbr /\u003e\n粗略理解: 我们用的东八区时间(北京标准时间),是东经120度线的理论时间(平太阳时,平均太阳时)\u003cbr /\u003e\n按照地球自转一圈严格为24小时计算,正好每经度4分钟(24小时*60/360度 = 4分钟),我国跨越五个时区,已知经度和北京标准时间可以计算出地方理论时间(地方平太阳时,(J-120)*4).\u003cbr /\u003e\n实际上地球自转速度有快有慢,而且太阳并不总是从正东方升起,考虑这个快慢和倾角而计算出的时间为真太阳时,真太阳时的正午12点,正好当地的(如日晷)影子最短.\u003cbr /\u003e\n地方平太阳时与真太阳时有相对固定的差值,各地都一样,每年1月1日大约相差3分钟,12月1日大约相差11分钟,可以通过\"真平太阳时差换算表\"查得,本项目采用天文方法计算.\u003cbr /\u003e\n有说古人用日晷计时,没有北京时间的说法,所以排八字要用真太阳时,请自行斟酌\u003cbr /\u003e\n\n6,精确度问题\u003cbr /\u003e\n当前项目与寿星万年历(源码在 sxwnl 目录)进行过逐时比对[js/diff.js],结果如下:\u003cbr /\u003e\n公历儒略历部分完全匹配\u003cbr /\u003e\n节气及月相部分相差不超过20秒(均为天文科学上的算法)\u003cbr /\u003e\n真太阳时部分相差在20秒内,本项目考虑了纬度(均为天文科学上的算法)\u003cbr /\u003e\nPHP中的date_sun_info($timestamp, $W, $J)也能实现真太阳时的计算,与本项目的真太阳时模块有几分钟误差\u003cbr /\u003e\n农历-721年至2300年完全匹配(古代农历是完全从寿星万年历搬过来的)\u003cbr /\u003e\n四柱八字算法上,寿星不考虑年柱月柱的真太阳时,导致少量对不上\u003cbr /\u003e\n星座算法上,寿星精确到日,本项目精确到秒,导致节气交接日星座对不上\u003cbr /\u003e\n\n7,需要解释的\u003cbr /\u003e\n采取真太阳时排盘,由于年柱以立春为界,月柱以节令为界,那么廿四节气是否也要转为真太阳时?\u003cbr /\u003e\n真太阳时排盘有几种方案,请自行斟酌:\u003cbr /\u003e\na.仅对日柱时柱做调整,年柱月柱不动(寿星万年历,常用方案)\u003cbr /\u003e\nb.年月日时柱均做调整,节气时刻不动(本项目方案)\u003cbr /\u003e\nc.年月日时柱均做调整,节气时刻均转为真太阳时(科学地说应该用此方案)\u003cbr /\u003e\n廿四节气是针对北半球而言的,南半球的干支历排盘以及星座等要如何处理呢?\u003cbr /\u003e\n\nPHP与Javascript的方法是一致的,如下:\u003cbr /\u003e\n\n公历转儒略日:\u003cbr /\u003e\np.Jdays(yy, mm, dd, hh, mt, ss);\u003cbr /\u003e\n\n儒略日转公历:\u003cbr /\u003e\np.Jtime(jd);\u003cbr /\u003e\n\n公历转农历:\u003cbr /\u003e\np.Solar2Lunar(yy, mm, dd);\u003cbr /\u003e\n\n农历转公历:\u003cbr /\u003e\np.Lunar2Solar(yy, mm, dd, ry); //传yy年1月1日ry=false,返回中有闰月及各月日数信息\u003cbr /\u003e\n\n公历转干支历:\u003cbr /\u003e\np.GetGZ(yy, mm, dd, hh, mt, ss);\u003cbr /\u003e\n\n干支历转(搜索)公历:\u003cbr /\u003e\np.gz2gl(ygz, mgz, dgz, hgz, yeai, mx);\u003cbr /\u003e\n\n根据公历进行八字真太阳时排盘\u003cbr /\u003e\np.fatemaps(xb, yy, mm, dd, hh, mt, ss, J, W); //J为经度W为纬度,东经80度27分表示: 80+27/60\u003cbr /\u003e\n\n//引申出来的方法\u003cbr /\u003e\np.ValidDate(yy, mm, dd);\u003cbr /\u003e\np.GetWeek(yy, mm, dd); //计算公历的某天是星期几\u003cbr /\u003e\np.GetSolarDays(yy, mm); //获取公历某个月有多少天\u003cbr /\u003e\np.GetXZ(yy, mm, dd, hh, mt, ss); //根据公历年月日精确计算星座下标\u003cbr /\u003e\np.GetAdjustedJQ(yy, false); //求出含某公历年春分點開始的24节气的儒略日历时间\u003cbr /\u003e\np.MGZ(ygz); //根据年干支计算所有合法的月干支: 甲己之年丙作首...\u003cbr /\u003e\np.HGZ(dgz); //根据日干支计算所有合法的时干支: 甲己還加甲...\u003cbr /\u003e\np.GZ(tg, dz); //天干地支计算甲子编号\u003cbr /\u003e\np.risenset(jd, J, W, LX); //根据经纬度计算日出日落或月出月落时刻\u003cbr /\u003e\n\n//分析刑冲合害关系\u003cbr /\u003e\nGetGX(tg, dz); //参看demo.html 及 docs/make_gx.php\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhkargc%2Fpaipan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhkargc%2Fpaipan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhkargc%2Fpaipan/lists"}