PHP的時間日期與例項應用:日曆核心程式

1111發表於2019-02-16

一、時間戳

1.19701-1-1到現在的秒數,用time()獲取
2.格式化date("y-m-d h:i:s",time()),由於按國際標準,所以預設為倫敦時間
3.更改時區的方法:
    a.date("y-m-d h:i:s",time()+8*60*60);//東八區
    b.date_default_timezone_set("PRC");再用date
4.將格式化時間轉換為時間戳:
    a.mktime(時,分,秒,月,日,年),年月日等數字超出範圍自動轉到下個週期,傳參格式如下:
    int mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] )
    b.給定規範的格式化時間,使用strtotime($time)來轉換,支援很多格式(詳細見手冊)
    c.microtime():返回時間戳至微秒數,主要是用來測試某段指令碼程式的執行所用的時間

二、例項:日曆演算法
注:年月日可以由get傳入也可以預設當前值

    date_default_timezone_set(`PRC`);
    $year = isset($_GET[`year`]) ? $_GET[`year`] : date(`y`);//當前年
    $month = isset($_GET[`month`]) ? $_GET[`month`] : date(`m`);
    $day = isset($_GET[`day`]) ? $_GET[`day`] : date(`d`);
    //當月的天數
    $days=date(`t`,mktime(0,0,0,$month,1,$year));
    //獲取當月第一天星期幾
    $firstDay=date(`w`,mktime(0,0,0,$month,1,$year));
    
    echo `<table border="1" width="300" align="center">`;
    echo `<tr>`;
    echo `<th style="background:blue">日</th>`;    
    echo `<th style="background:blue">一</th>`;    
    echo `<th style="background:blue">二</th>`;    
    echo `<th style="background:blue">三</th>`;    
    echo `<th style="background:blue">四</th>`;    
    echo `<th style="background:blue">五</th>`;    
    echo `<th style="background:blue">六</th>`;    
    echo `</tr>`;
    echo `<tr>`;
    for($i=0;$i<$firstDay;$i++){
        echo `<th>&nbsp;</th>`;
    }    
    $result=``;
    for($j=1;$j<$days;$j++){
        $i++;
        if($j==$day){
            $result.=`<th style="background:red">`.$j.`</th>`;
        }else{
            $result.=`<th>`.$j.`</th>`;
        }
        
        if($i%7===0){
            $result.=`</tr><tr>`;
        }
    }    
    while($i%7!==0){
        $result.=`<th>&nbsp;</th>`;
        $i++;
    }
    echo $result;
    echo `</tr>`;            
    echo `</table>`;

相關文章