+ -
当前位置:首页 → 问答吧 → PHP之干支纪年法

PHP之干支纪年法

时间:2008-11-18

来源:互联网

[php]<?php
/**
* 干支纪年法
*
* 原理分析
* ------------------------------
* 干和支的含义:干支是天干,地支的合称。
* ----------------------------------------
*        1        2        3        4        5        6        7        8        9        10  
*        甲        乙        丙        丁        戊        己        庚        辛        壬        癸   
* ----------------------------------------
* 支指地支,共有12个符号:
* -----------------------------------------------
*        1        2        3        4        5        6        7        8        9        10        11        12
*        子        丑        寅        卯        辰        巳        午        未        申        酉        戌        亥
* -------------------------------------------------------------
* 干和支组合后用于纪年,即:将十天干和十二地支按顺序搭配组合成干支,用于纪年。
* 按此排法,当天干10个符号排了六轮与地支12个符号排了五轮以后,可构成60干支。
* 续排下去又将恢复原状,周而复始,即如民间所说“六十年转甲子”。
*
* @author PHP城管
* @email  [email protected]
* @copyright 2008-10-06
*/
class cls_heavenly_stems{
        //10 天干
        protected $heavenly = array(1=>'甲','乙','丙','丁','戊','己','庚','辛','壬','癸');
        //12 地支
        protected $stems = array(1=>'子','丑','寅','卯','辰','巳','午','未','申','酉','戌','亥');

        protected $list = array (
                                                                1 => '甲子',
                                                                2 => '乙丑',
                                                                3 => '丙寅',
                                                                4 => '丁卯',
                                                                5 => '戊辰',
                                                                6 => '己巳',
                                                                7 => '庚午',
                                                                8 => '辛未',
                                                                9 => '壬申',
                                                                10 => '癸酉',
                                                                11 => '甲戌',
                                                                12 => '乙亥',
                                                                13 => '丙子',
                                                                14 => '丁丑',
                                                                15 => '戊寅',
                                                                16 => '己卯',
                                                                17 => '庚辰',
                                                                18 => '辛巳',
                                                                19 => '壬午',
                                                                20 => '癸未',
                                                                21 => '甲申',
                                                                22 => '乙酉',
                                                                23 => '丙戌',
                                                                24 => '丁亥',
                                                                25 => '戊子',
                                                                26 => '己丑',
                                                                27 => '庚寅',
                                                                28 => '辛卯',
                                                                29 => '壬辰',
                                                                30 => '癸巳',
                                                                31 => '甲午',
                                                                32 => '乙未',
                                                                33 => '丙申',
                                                                34 => '丁酉',
                                                                35 => '戊戌',
                                                                36 => '己亥',
                                                                37 => '庚子',
                                                                38 => '辛丑',
                                                                39 => '壬寅',
                                                                40 => '癸卯',
                                                                41 => '甲辰',
                                                                42 => '乙巳',
                                                                43 => '丙午',
                                                                44 => '丁未',
                                                                45 => '戊申',
                                                                46 => '己酉',
                                                                47 => '庚戌',
                                                                48 => '辛亥',
                                                                49 => '壬子',
                                                                50 => '癸丑',
                                                                51 => '甲寅',
                                                                52 => '乙卯',
                                                                53 => '丙辰',
                                                                54 => '丁巳',
                                                                55 => '戊午',
                                                                56 => '己未',
                                                                57 => '庚申',
                                                                58 => '辛酉',
                                                                59 => '壬戌',
                                                                60 => '癸亥',);

        //六十年甲子(干支表)
        public  function sixty(){
                $list = array();
                for ($i = 1;$i <= 60 ;$i++){
                        $string = '';
                        $string = $this->heavenly[$i%10 == 0 ? 10 : $i%10];
                        $string .= $this->stems[$i%12 == 0 ? 12 : $i%12];
                        $list[$i] = $string;
                }
                return $list;
        }

        //公元前+公元后
        public function year($year,$BC = false){
                $ac = $year % 60;
                if($BC){
                        $key = $ac < 57 ? $ac + 3 : $ac - 57;
                }else{
                        $key = $ac < 3 ? $ac + 57 : $ac - 3;
                }
                return $this->list[$key];
        }
}

$cls_heavenly_stems = new cls_heavenly_stems();
//$temp = $cls_heavenly_stems->sixty();
echo $cls_heavenly_stems->year(2008);
?>[/php]

source:http://www.5dou.net/app/2.txt

作者: skey   发布时间: 2008-11-18

有兴趣的可以继续深入计算把生辰八字算出来

作者: skey   发布时间: 2008-11-18

这个算法还不是很好。。还可以退出更好的算法

作者: iminto   发布时间: 2008-11-18

呵呵,看来有同样爱好的人啦!
下面是我做的干支算法和生辰八字算法:
http://www.chenchen8.com/blog/archives/278


各位拍砖啊!!!!!

作者: 0hudu   发布时间: 2008-11-18