• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術(shù)開發(fā)教程 > 詳細頁面

        2個日期類

        2個日期類

        更新時間:2022-05-04 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

        <?
        /**
        這是公歷和農(nóng)歷類的定義,由于php的日期計算限制,所以只能計算1970-1938之間的時間
        農(nóng)歷類的計算方法使用了林洵賢先生的算法,在此表示感謝!在joy Asp可以找到林先生的大作(javascript)
        */

        /**
        * 日期類
        * 本對象套用JavaScript的日期對象的方法
        * 設(shè)置$mode屬性,可兼容JavaScript日期對象
        */
        class Date {
        var $time = 0;
        var $mode = 0;// 本屬性為與JavaScript兼容而設(shè),$mode=1為JavaScript方式
        var $datemode = "Y-m-d H:i:s";// 日期格式 "Y-m-d H:i:s",可自行設(shè)定
        function Date($t=0) {
        if($t == 0)
        $this->time = time();
        }
        /**
         * 返回從GMT時間1970年1月1日0時開始的毫秒數(shù)
         */
        function getTime() {
        $temp = gettimeofday();
        return $temp[sec]*1000+round($temp[usec]/1000);
        }
        /**
         * 返回年份
         */
        function getYear() {
        $temp = getdate($this->time);
        return $temp[year];
        }
        /**
         * 返回月份
         */
        function getMonth() {
        $temp = getdate($this->time);
        return $temp[mon]-$this->mode;
        }
        /**
         * 返回日期
         */
        function getDate() {
        $temp = getdate($this->time);
        return $temp[mday];
        }
        /**
         * 返回星期
         */
        function getDay() {
        $temp = getdate($this->time);
        return $temp[wday]-$this->mode;
        }
        /**
         * 返回小時
         */
        function getHours() {
        $temp = getdate($this->time);
        return $temp[hours];
        }
        /**
         * 返回分
         */
        function getMinutes() {
        $temp = getdate($this->time);
        return $temp[minutes];
        }
        /**
         * 返回秒
         */
        function getSeconds() {
        $temp = getdate($this->time);
        return $temp[seconds];
        }
        /**
         * 設(shè)定年份
         * php 4.0.6 year 1970 -- 2038
         */
        function setYear($val) {
        $temp = getdate($this->time);
        $temp[year] = $val;
        $this->set_time($temp);
        }
        /**
         * 設(shè)定月份
         */
        function setMonth($val) {
        $temp = getdate($this->time);
        $temp[mon] = $val+$this->mode;
        $this->set_time($temp);
        }
        /**
         * 設(shè)定日期
         */
        function setDate($val) {
        $temp = getdate($this->time);
        $temp[mday] = $val;
        $this->set_time($temp);
        }
        /**
         * 設(shè)定星期
         */
        function setDay($val) {
        $temp = getdate($this->time);
        $temp[wday] = $val+$this->mode;
        $this->set_time($temp);
        }
        /**
         * 設(shè)定小時
         */
        function setHours($val) {
        $temp = getdate($this->time);
        $temp[hours] = $val;
        $this->set_time($temp);
        }
        /**
         * 設(shè)定分
         */
        function setMinutes($val) {
        $temp = getdate($this->time);
        $temp[minutes] = $val;
        $this->set_time($temp);
        }
        /**
         * 設(shè)定秒
         */
        function setSeconds($val) {
        $temp = getdate($this->time);
        $temp[seconds] = $val;
        $this->set_time($temp);
        }
        /**
         * 返回系統(tǒng)格式的字符串
         */
        function toLocaleString() {
        return date($this->datemode,$this->time);
        }
        /**
         * 使用GTM時間創(chuàng)建一個日期值
         */
        function UTC($year,$mon,$mday,$hours=0,$minutes=0,$seconds=0) {
        $this->time = mktime($hours,$minutes,$seconds,$mon,$mday,$year);
        return $this->time;
        }
        /**
         * 等價于DateAdd(interval,number,date)
         * 返回已添加指定時間間隔的日期。
         * Inetrval為表示要添加的時間間隔字符串表達式,例如分或天
         * number為表示要添加的時間間隔的個數(shù)的數(shù)值表達式
         * Date表示日期
         *
         * Interval(時間間隔字符串表達式)可以是以下任意值:
         *yyyy year年
         *q Quarter季度
         *m Month月
         *y Day of year一年的數(shù)
         *d Day天
         *w Weekday一周的天數(shù)
         *ww Week of year周
         *h Hour小時
         *n Minute分
         *s Second秒
         *w、y和d的作用是完全一樣的,即在目前的日期上加一天,q加3個月,ww加7天。
         */
        function Add($interval, $number, $date) {
        $date = Date::get_time($date);
        $date_time_array = getdate($date);
        $hours = $date_time_array["hours"];
        $minutes = $date_time_array["minutes"];
        $seconds = $date_time_array["seconds"];
        $month = $date_time_array["mon"];
        $day = $date_time_array["mday"];
        $year = $date_time_array["year"];
        switch ($interval) {
        case "yyyy": $year +=$number; break;
        case "q": $month +=($number*3); break;
        case "m": $month +=$number; break;
        case "y":
        case "d":
        case "w": $day+=$number; break;
        case "ww": $day+=($number*7); break;
        case "h": $hours+=$number; break;
        case "n": $minutes+=$number; break;
        case "s": $seconds+=$number; break;
        }
        $temptime = mktime($hours ,$minutes, $seconds,$month ,$day, $year);
        return $temptime;
        }
        /**
         * 等價于DateDiff(interval,date1,date2)
         * 返回兩個日期之間的時間間隔
         * intervals(時間間隔字符串表達式)可以是以下任意值:
         * w周
         * d天
         * h小時
         * n分鐘
         * s秒
         */
        function Diff($interval, $date1,$date2) {
        // 得到兩日期之間間隔的秒數(shù)
        $timedifference = Date::get_time($date2) - Date::get_time($date1);
        switch ($interval) {
        case "w": $retval = bcdiv($timedifference ,604800); break;
        case "d": $retval = bcdiv( $timedifference,86400); break;
        case "h": $retval = bcdiv ($timedifference,3600); break;
        case "n": $retval = bcdiv( $timedifference,60); break;
        case "s": $retval = $timedifference; break;
        }
        return $retval;
        }

        /**
         * 輸出,根據(jù)需要直接修改本函數(shù)或在派生類中重寫本函數(shù)
         */
        function display() {
        $nStr = array('日','一','二','三','四','五','六');
        echo sprintf("%4d年%2d月%2d日 星期%s<br>",$this->getYear(),$this->getMonth(),$this->getDate(),$nStr[$this->getDay()%7]);
        }
        /**
         * 工作函數(shù)
         */
        function set_time(&$ar) {
        $this->time = mktime($ar[hours],$ar[minutes],$ar[seconds],$ar[mon],$ar[mday],$ar[year]);
        }
        /**
         * 轉(zhuǎn)換為UNIX時間戳
         */
        function get_time($d) {
        if(is_numeric($d))
        return $d;
        else {
        if(! is_string($d)) return 0;
        if(ereg(":",$d)) {
        $buf = split(" +",$d);
        $year = split("[-/]",$buf[0]);
        $hour = split(":",$buf[1]);
        if(eregi("pm",$buf[2]))
        $hour[0] += 12;
        return mktime($hour[0],$hour[1],$hour[2],$year[1],$year[2],$year[0]);
        }else {
        $year = split("[-/]",$d);
        return mktime(0,0,0,$year[1],$year[2],$year[0]);
        }
        }
        }
        } // 日期類定義結(jié)束
        ?>

        <?
        /**
        * 農(nóng)歷類
        */
        class Lunar {
        var $year;
        var $month;
        var $day;
        var $isLeap;
        var $yearCyl;
        var $dayCyl;
        var $monCyl;
        var $time;
        var $lunarInfo = array(
        0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,
        0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,
        0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,
        0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950,
        0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,
        0x06ca0,0x0b550,0x15355,0x04da0,0x0a5d0,0x14573,0x052d0,0x0a9a8,0x0e950,0x06aa0,
        0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,
        0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0x195a6,
        0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,
        0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,
        0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,
        0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,
        0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,
        0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,
        0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0,
        0x14b63);

        /**
         * 傳回農(nóng)歷 y年的總天數(shù)
         */
        function lYearDays($y) {
        $sum = 348;
        for($i=0x8000; $i>0x8; $i>>=1)
        $sum += ($this->lunarInfo[$y-1900] & $i)? 1: 0;
        return $sum+$this->leapDays($y);
        }
        /**
         * 傳回農(nóng)歷 y年閏月的天數(shù)
         */
        function leapDays($y) {
        if($this->leapMonth($y))
        return ($this->lunarInfo[$y-1900] & 0x10000)? 30: 29;
        else return 0;
        }
        /**
         * 傳回農(nóng)歷 y年閏哪個月 1-12 , 沒閏傳回 0
         */
        function leapMonth($y) {
        return $this->lunarInfo[$y-1900] & 0xf;
        }
        /**
         * 傳回農(nóng)歷 y年m月的總天數(shù)
         */
        function monthDays($y,$m) {
        return ($this->lunarInfo[$y-1900] & (0x10000>>$m))? 30: 29;
        }
        /**
         * 創(chuàng)建農(nóng)歷日期對象
         */
        function Lunar($objDate,$month=1,$day=1) {
        $leap=0;
        $temp=0;
        if(is_object($objDate))
        $this->time = mktime(0,0,0,$objDate->getMonth(),$objDate->getDate(),$objDate->getYear());
        else {
        $year = $objDate;
        $this->time = mktime(0,0,0,$month,$day,$year);
        if($year < 1970) {
        return;
        $temp = 0;
        for($i=1970; $i>$year; $i--) {
        $temp = $this->lYearDays($i);
        $offset -= $temp;
        }
        }
        }
        $offset = round($this->time/86400+25537);

        $this->dayCyl = $offset + 40;
        $this->monCyl = 14;

        for($i=1900; $i<$year && $offset>0; $i++) {
        $temp = $this->lYearDays($i);
        $offset -= $temp;
        $this->monCyl += 12;
        }

        if($offset<0) {
        $offset += $temp;
        $i--;
        $this->monCyl -= 12;
        }

        $this->year = $i;
        $this->yearCyl = $i-1864;
        $leap = $this->leapMonth($i); //閏哪個月

        $this->isLeap = false;
        for($i=1; $i<13 && $offset>0; $i++) {
        //閏月
        if($leap>0 && $i==($leap+1) && $this->isLeap==false) {
        $i--;
        $this->isLeap = true;
        $temp = $this->leapDays($this->year);
        }else {
        $temp = $this->monthDays($this->year, $i);
        }

        //解除閏月
        if($this->isLeap==true && $i==($leap+1))
        $this->isLeap = false;

        $offset -= $temp;
        if($this->isLeap == false)
        $this->monCyl ++;
        }

        if($offset==0 && $leap>0 && $i==$leap+1)
        if($this->isLeap)
        $this->isLeap = false;
        else {
        $this->isLeap = true;
        $i--;
        $this->monCyl--;
        }

        if($offset<0) {
        $offset += $temp;
        $i--;
        $this->monCyl--;
        }

        $this->month = $i;
        $this->day = $offset + 1;
        }

        function cyclical($num) {
        $Gan = Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
        $Zhi = Array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");
        return $Gan[$num%10].$Zhi[$num%12];
        }
        /**
         * 輸出,根據(jù)需要直接修改本函數(shù)或在派生類中重寫本函數(shù)
         */
        function display() {
        $nStr = array(' ','正','二','三','四','五','六','七','八','九','十','十一','臘');
        echo sprintf("農(nóng)歷 %s%s月%s<br>",($this->isLeap?"閏":""),$nStr[$this->month],$this->cDay($this->day));
        echo sprintf("%s年 %s月 %s日",$this->cyclical($this->yearCyl),$this->cyclical($this->monCyl),$this->cyclical($this->dayCyl));
        }
        /**
         * 中文日期
         */
        function cDay($d) {
        $nStr1 = array('日','一','二','三','四','五','六','七','八','九','十');
        $nStr2 = array('初','十','廿','卅',' ');

        switch($d) {
        case 10:
        $s = '初十';
        break;
        case 20:
        $s = '二十';
        break;
        case 30:
        $s = '三十';
        break;
        default :
        $s = $nStr2[floor($d/10)];
        $s .= $nStr1[$d%10];
        }
        return $s;
        }
        }// 農(nóng)歷類定義結(jié)束
        ?>

        <?
        //測試例


        $d = new Date;
        echo "<br>現(xiàn)在是:";
        $d->display();

        $d->setYear(2037);
        echo "<br>現(xiàn)在是:";
        echo $d->getYear()."年";
        echo $d->getMonth()."月";
        echo $d->getDate()."日";
        echo " 星期".$d->getDay()." ";
        echo $d->getHours()."時";
        echo $d->getMinutes()."分";
        echo $d->getSeconds()."秒<br>";

        $d->UTC(1998,10,2,22,0,8);
        echo $d->toLocaleString()."<br>";

        $d = new Date;
        $ld = new Lunar($d);
        $d->display();
        $ld->display();
        $d->UTC(1998,10,2,22,0,8);
        $ld = new Lunar($d);
        $d->display();
        $ld->display();
        $ld = new Lunar(2002,2,12);
        $ld->display();

        echo __LINE__."<BR>";

        $d1 = "2002-01-11";
        $d2 = date("Y-m-d",$d->add("d",35,$d1));

        echo $d1."的". Date::diff("d",$d1,$d2)."天后是$d2<br>";
        echo $d1."的10天前是".date("Y-m-d",Date::add("d",-10,$d1))."<br>";
        $d3 = date("Y/m/d H:i:s");
        echo "現(xiàn)在是".$d3."距離2002/2/12 12:59:59還有".Date::diff("s",$d3,"2002/2/12 12:59:59")."秒<br>";
        ?>

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 亚洲人成无码久久电影网站| 国产亚洲美女精品久久久| 丁香花免费完整高清观看| 真实乱视频国产免费观看| 国产免费卡一卡三卡乱码| 亚洲日产无码中文字幕| 亚洲午夜电影在线观看| 日韩在线视精品在亚洲| a级成人毛片免费图片| h视频在线观看免费网站| 国产亚洲福利一区二区免费看| 亚洲人片在线观看天堂无码| aa在线免费观看| 精品免费国产一区二区| 亚洲精品国产高清在线观看| 91精品导航在线网址免费| 五月天婷亚洲天综合网精品偷| 亚洲第一成年网站大全亚洲| 色爽黄1000部免费软件下载| 一二三四在线播放免费观看中文版视频 | 在线免费观看毛片网站| 亚洲va久久久噜噜噜久久男同| 亚洲香蕉在线观看| 无码国产精品一区二区免费3p| 亚洲AV成人精品日韩一区18p| 一级特黄色毛片免费看| 日韩特黄特色大片免费视频| 亚洲精品影院久久久久久| 无限动漫网在线观看免费 | 狠狠色婷婷狠狠狠亚洲综合| 国产精品偷伦视频观看免费| 国产一级淫片免费播放| a免费毛片在线播放| 亚洲精品色婷婷在线影院| 亚洲а∨精品天堂在线| 国产亚洲精品不卡在线| 99久久99这里只有免费费精品 | 久久精品国产亚洲AV久| 最近中文字幕电影大全免费版| 亚洲日韩一区二区一无码| 久久亚洲2019中文字幕|