生辰八字——php

<?php 
//四柱即出生人的出生年、月、日、时分别称之为年柱、月柱、日柱和时柱;以天干地支纪年法表示出来每柱两个字,共八个字也称生辰八字,用以推算个人运程。
//年柱和月柱都需要传农历的年和月,日柱和时柱都是公历的几号和几时。
$Sizhu= new Sizhu(); 
var_dump( "年柱:".$Sizhu->nianzhu(2021)) ; 

var_dump("月柱:". $Sizhu->yuezhu(8)) ;  

var_dump("日柱:". $Sizhu->rizhu(2021, 8, 7)) ;

var_dump( "时柱:".$Sizhu->shizhu(10)) ;die;
class Sizhu {
    public $niangan,  $nianzhi, $yuegan,   $rigan;
    function nianzhu($year) {
        $a = array('甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸');
        $b = array('子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥'); 
        $last = $year % 10;
        if ($last <= 3) {
            $last += 10;
        } 
        $this->niangan = $last - 3;
        $tiangan = $a[$this->niangan - 1];
        $last = $year % 100;
        if ($year >= 1800 && $year <= 1899) {
            $nianzhi = $last + 9;
        } else if ($year >= 1900 && $year <= 1999) {
            $nianzhi = $last + 1;
        } else if ($year >= 2000 && $year <= 2099) {
            $nianzhi = $last + 5;
        } if ($nianzhi > 12) {
            $nianzhi %= 12;
        } 
        $this->nianzhi = $nianzhi;
        $dizhi = $b[$nianzhi - 1]; 
        return $tiangan . $dizhi;
    }
    function yuezhu($month) {
        $a = array('甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸'); 
        $b = array('寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥', '子', '丑'); 
    //  var_dump( $this->niangan);die;
        $this->yuegan = $this->niangan-1 * 2 + $month; 
        if ($this->yuegan > 10) {
            $this->yuegan %= 10;
        } 
        return $a[$this->yuegan - 2] . $b[$month - 2];
    } 
    function rizhu($year, $month, $day) {
        $a = array('甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸'); 
        $b = array('子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥'); 
         //获取时间戳
        $today = strtotime("{$year}-{$month}-{$day}");
        //获取年初时间
        $year_start = strtotime("{$year}-01-01"); 
        //获取当年天数 
        $days = ($today - $year_start)/86400 + 1;
        // var_dump(date("z",$today),$days);die;
        //
        $n = (int)(($year - 1900) * 5 + ($year - 1900 + 3) / 4 + 9 + $days); 
 
        $n = $n % 60; 
        $this->rigan = $n % 10; 
        if ($this->rigan == 0) {
            $this->rigan = 10;
        } $dizhi = $n % 12; if ($dizhi == 0) {
            $dizhi = 12;
        }
        return $a[$this->rigan - 1] . $b[$dizhi - 1];
    } 
    function shizhu($hour,$rigan='') {
        $a = array('甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸'); 
        $b = array('子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥'); if ($hour >= 23 || $hour < 1) {
            $shizhi = 1;
        } else if ($hour >= 1 && $hour < 3) {
            $shizhi = 2;
        } else if ($hour >= 3 && $hour < 5) {
            $shizhi = 3;
        } else if ($hour >= 5 && $hour < 7) {
            $shizhi = 4;
        } else if ($hour >= 7 && $hour < 9) {
            $shizhi = 5;
        } else if ($hour >= 9 && $hour < 11) {
            $shizhi = 6;
        } else if ($hour >= 11 && $hour < 13) {
            $shizhi = 7;
        } else if ($hour >= 13 && $hour < 15) {
            $shizhi = 8;
        } else if ($hour >= 15 && $hour < 17) {
            $shizhi = 9;
        } else if ($hour >= 17 && $hour < 19) {
            $shizhi = 10;
        } else if ($hour >= 19 && $hour < 21) {
            $shizhi = 11;
        } else if ($hour >= 21 && $hour < 23) {
            $shizhi = 12;
        } 
    
        $n = $this->rigan * 2 + $shizhi - 2; 
        if ($n > 10) {
            $n %= 10;
        } 
        return $a[$n - 1] . $b[$shizhi - 1];
    } 
    public function test() {
        $a = $this->rizhu(2049, 11, 2); 
        var_dump($a);
    }
} 
 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值