|
1 |
| -PHP Javascript 农历公历干支历互转,万年历,六十甲子,属相,十二星座,二十四节气,支持从-1000到3000年间的八字排盘及大运推算 |
2 |
| -算法原理和JS源码完全来自: http://www.bieyu.com/ |
| 1 | +PHP Javascript 农历公历干支历互转,万年历,六十甲子,属相,十二星座,二十四节气,支持从-1000到3000年间的八字排盘及大运推算<br /> |
| 2 | +算法原理和JS源码完全来自: http://www.bieyu.com/<br /> |
3 | 3 |
|
4 |
| -此工具类包含: |
5 |
| -1,儒略日历 |
6 |
| -以公元前4713年1月1日12时为起点,每天(每廿四小时)加一的历法; |
7 |
| -比如2020年1月1日12点的儒略日为2458850,2020年1月1日0点的儒略日为(2458850 - 0.5); |
8 |
| -这种历法方便各种计算,比如已知起点日为周一可求得任一日期的星期,已知起点日的干支可求得任一日期的干支 |
| 4 | +此工具类包含:<br /> |
| 5 | +1,儒略日历<br /> |
| 6 | +以公元前4713年1月1日12时为起点,每天(每廿四小时)加一的历法;<br /> |
| 7 | +比如2020年1月1日12点的儒略日为2458850,2020年1月1日0点的儒略日为(2458850 - 0.5);<br /> |
| 8 | +这种历法方便各种计算,比如已知起点日为周一可求得任一日期的星期,已知起点日的干支可求得任一日期的干支<br /> |
9 | 9 |
|
10 |
| -2,公历(阳历,格里历,西历) |
11 |
| -以地球绕太阳公转计算的历法; |
12 |
| -用公式可直接求得两分两至(春分秋分夏至冬至); |
13 |
| -公转是椭圆轨道,把这个椭圆均分为24等分,可求得中国的二十四节气;12等分则为西方的十二星座; |
14 |
| -此工具计算出的时间点误差在20秒内; |
15 |
| -已知2020年春分点为3月20日11点49分57秒,则算法认为57秒前是双鱼座,57秒后是白羊座,是否按此计算请自行斟酌; |
16 |
| -每月两节不变更,最多相差一两天.上半年来六廿一,下半年是八廿三 这里的六廿一和八廿三说的是公历; |
| 10 | +2,公历(阳历,格里历,西历)<br /> |
| 11 | +以地球绕太阳公转计算的历法;<br /> |
| 12 | +用公式可直接求得两分两至(春分秋分夏至冬至);<br /> |
| 13 | +公转是椭圆轨道,把这个椭圆均分为24等分,可求得中国的二十四节气;12等分则为西方的十二星座;<br /> |
| 14 | +此工具计算出的时间点误差在20秒内;<br /> |
| 15 | +已知2020年春分点为3月20日11点49分57秒,则算法认为57秒前是双鱼座,57秒后是白羊座,是否按此计算请自行斟酌;<br /> |
| 16 | +每月两节不变更,最多相差一两天.上半年来六廿一,下半年是八廿三 这里的六廿一和八廿三说的是公历;<br /> |
17 | 17 |
|
18 |
| -3,阴阳历(农历,民间称阴历) |
19 |
| -严格地说,以月球绕地一周为一个月计算的历法为阴历; |
20 |
| -如果这样,阴历跟二十四节气的时间差就越来越大,我们可能要在夏季过大年初一; |
21 |
| -也许人们为了能固定在立春前后吃上年夜饭(May be...),引入闰月的概念,使之与公转齐平,所以农历考虑了月亮又考虑了太阳,为阴阳历; |
22 |
| -陰曆正月與置閏这一段很难理解,请参看 http://www.bieyu.com/ |
| 18 | +3,阴阳历(农历,民间称阴历)<br /> |
| 19 | +严格地说,以月球绕地一周为一个月计算的历法为阴历;<br /> |
| 20 | +如果这样,阴历跟二十四节气的时间差就越来越大,我们可能要在夏季过大年初一;<br /> |
| 21 | +也许人们为了能固定在立春前后吃上年夜饭(May be...),引入闰月的概念,使之与公转齐平,所以农历考虑了月亮又考虑了太阳,为阴阳历;<br /> |
| 22 | +陰曆正月與置閏这一段很难理解,请参看 http://www.bieyu.com/<br /> |
23 | 23 |
|
24 |
| -4,干支历 |
25 |
| -这种历法现在可能多用于命理学和历史研究领域,与二十四节气相关; |
26 |
| -由于一年只有12个月而不是60个月,一天只有12小时而不是60小时,所以合法的四柱并不是简单的排列组合; |
27 |
| -年柱跟月柱有固定的关系:甲己之年丙作首,乙庚之歲戊為頭,丙辛歲首尋庚起,丁壬壬位順行流,若言戊癸何方發,甲寅之上好追求. |
28 |
| -日柱跟时柱也有固定关系:甲己還加甲,乙庚丙作初,丙辛從戊起,丁壬庚子屬,戊癸何方發,壬子是真途; |
29 |
| -八字组合共有518400种,且一個八字出現後,至少要60年後才会再出現,最多要240年後才又出現; |
30 |
| -已知2020立春点为2月4日17时3分44秒,44秒前为己亥年,44秒后为庚子年; |
31 |
| -已知2020驚蟄为3月5日10时57分22秒,22秒前为戊寅月,22秒后为己卯月; |
32 |
| -是否按此计算请自行斟酌,尤其是要用在命理学上的时候; |
| 24 | +4,干支历<br /> |
| 25 | +这种历法现在可能多用于命理学和历史研究领域,与二十四节气相关;<br /> |
| 26 | +由于一年只有12个月而不是60个月,一天只有12小时而不是60小时,所以合法的四柱并不是简单的排列组合;<br /> |
| 27 | +年柱跟月柱有固定的关系:甲己之年丙作首,乙庚之歲戊為頭,丙辛歲首尋庚起,丁壬壬位順行流,若言戊癸何方發,甲寅之上好追求.<br /> |
| 28 | +日柱跟时柱也有固定关系:甲己還加甲,乙庚丙作初,丙辛從戊起,丁壬庚子屬,戊癸何方發,壬子是真途;<br /> |
| 29 | +八字组合共有518400种,且一個八字出現後,至少要60年後才会再出現,最多要240年後才又出現;<br /> |
| 30 | +已知2020立春点为2月4日17时3分44秒,44秒前为己亥年,44秒后为庚子年;<br /> |
| 31 | +已知2020驚蟄为3月5日10时57分22秒,22秒前为戊寅月,22秒后为己卯月;<br /> |
| 32 | +是否按此计算请自行斟酌,尤其是要用在命理学上的时候;<br /> |
33 | 33 |
|
34 |
| -PHP与Javascript的方法是一致的,如下: |
| 34 | +PHP与Javascript的方法是一致的,如下:<br /> |
35 | 35 |
|
36 |
| -公历转儒略日: |
37 |
| -p.Jdays(yy, mm, dd, hh, mt, ss); |
| 36 | +公历转儒略日:<br /> |
| 37 | +p.Jdays(yy, mm, dd, hh, mt, ss);<br /> |
38 | 38 |
|
39 |
| -儒略日转公历: |
40 |
| -p.Jtime(jd); |
| 39 | +儒略日转公历:<br /> |
| 40 | +p.Jtime(jd);<br /> |
41 | 41 |
|
42 |
| -公历转农历: |
43 |
| -p.Solar2Lunar(yy, mm, dd); |
| 42 | +公历转农历:<br /> |
| 43 | +p.Solar2Lunar(yy, mm, dd);<br /> |
44 | 44 |
|
45 |
| -农历转公历: |
46 |
| -p.Lunar2Solar(yy, mm, dd, ry); |
| 45 | +农历转公历:<br /> |
| 46 | +p.Lunar2Solar(yy, mm, dd, ry);<br /> |
47 | 47 |
|
48 |
| -公历转干支历: |
49 |
| -p.GetGZ(yy, mm, dd, hh, mt, ss); |
| 48 | +公历转干支历:<br /> |
| 49 | +p.GetGZ(yy, mm, dd, hh, mt, ss);<br /> |
50 | 50 |
|
51 |
| -干支历转(搜索)公历: |
52 |
| -p.gz2gl(ygz, mgz, dgz, hgz, yeai, mx); |
| 51 | +干支历转(搜索)公历:<br /> |
| 52 | +p.gz2gl(ygz, mgz, dgz, hgz, yeai, mx);<br /> |
53 | 53 |
|
54 |
| -根据公历进行八字排盘 |
55 |
| -p.fatemaps(xb, yy, mm, dd, hh, mt, ss); |
| 54 | +根据公历进行八字排盘<br /> |
| 55 | +p.fatemaps(xb, yy, mm, dd, hh, mt, ss);<br /> |
56 | 56 |
|
57 | 57 | //引申出来的方法<br />
|
58 | 58 | p.ValidDate(yy, mm, dd);<br />
|
|
0 commit comments