1. 程式人生 > >關於獲取上一月的第一天及最後一天

關於獲取上一月的第一天及最後一天

PHP除錯的時候出現了警告:
It is not safe to rely on the system解決方法,其實就是時區設定不正確造成的,本文提供了3種方法來解決這個問題。
實際上,從PHP 5.1.0開始當對使用date()等函式時,如果timezone設定不正確,在每一次呼叫時間函式時,都會產生E_NOTICE 或者 E_WARNING 資訊,而又在php中,date.timezone這個選項,預設情況下是關閉的,無論用什麼php命令都是格林威治標準時間,但是PHP5.3中如果沒有設定部分時間類函式也會強行丟擲了這個錯誤的。
PS:現在由於大部分人使用VPS/雲主機,需要自己配置的環境的就更加會容易出現這個情況。
建議:不熟悉PHP環境還是用比較成熟的一鍵安裝包吧。

方法1:
(最好的方法)在php.ini里加上找到date.timezone項,設定date.timezone = “Asia/Shanghai”,重啟環境就ok了。

方法2:
在需要用到這些時間函式的時候,在頁面新增date_default_timezone_set(“PRC”);

方法3:
在頁頭加上設定時區ini_set(‘date.timezone’,’Asia/Shanghai’);

使用函式及陣列來獲取當月第一天及最後一天,比較實用

function getthemonth($date)
   {
   $firstday = date('Y-m-01', strtotime($date
)); $lastday = date('Y-m-d', strtotime("$firstday +1 month -1 day")); return array($firstday,$lastday); } $today = date("Y-m-d"); $day=getthemonth($today); echo "當月的第一天: ".$day[0]." 當月的最後一天: ".$day[1]; echo "<br/>";

獲取本月第一天和最後一天的兩種方法

    $BeginDate=date('Y-m-01', strtotime(date
("Y-m-d"))); echo "本月的第一天為".date('Y-m-01',strtotime(date("Y-m-d")))."<br>"; //獲取本月第一天 echo date('Y-m-d',mktime(0,0,0,date('m'),1,date('Y'))).'<br>'; echo "本月的最後一天為".date('Y-m-d', strtotime("$BeginDate +1 month -1 day"))."<br>"; //獲取本月最後一天 echo date('Y-m-d',mktime(0,0,0,date('m')+1,0,date('Y')))."<br>";

獲取上月第一天和最後一天的兩種方法

    echo "上一個月的第一天".date('Y-m-01', strtotime('-1 month'))."<br>";    //獲取上一個月的的第一天
    echo date('Y-m-d',mktime(0,0,0,date('m')-1,1,date('Y'))).'<br>';
    echo "上一個月的最後一天".date('Y-m-t', strtotime('-1 month'))."<br>";   //獲取上一個月的最後一天
    echo date('Y-m-d',mktime(0,0,0,date('m'),0,date('Y')))."<br>";
<?php 
    // $number = 123;
    // $txt = sprintf("%f",$number);
    // echo $txt;     //123.000000
    header('content-type:text/html;charset=utf-8');
    date_default_timezone_set('Asia/Shanghai');   //設定時區
    //echo "date(Y-m-d)輸出為".date("Y-m-d")."<br>";
    //echo "date(Y-m-d h:i:s),time()輸出為".date('y-m-d h:i:s',time())."<br>";
    //echo date('l')."<br>";               //tuesday
    $year = date('y');           //17
    $month = sprintf('%02d',date('m') - 1);       //05
    //echo strtotime("17-05-1")."<br>";      //1493568000


    $BeginDate=date('Y-m-01', strtotime(date("Y-m-d")));
    echo "本月的第一天為".date('Y-m-01',strtotime(date("Y-m-d")))."<br>";      //獲取本月第一天
    echo date('Y-m-d',mktime(0,0,0,date('m'),1,date('Y'))).'<br>';
    echo "本月的最後一天為".date('Y-m-d', strtotime("$BeginDate +1 month -1 day"))."<br>";    //獲取本月最後一天
    echo date('Y-m-d',mktime(0,0,0,date('m')+1,0,date('Y')))."<br>";


    echo "上一個月的第一天".date('Y-m-01', strtotime('-1 month'))."<br>";    //獲取上一個月的的第一天
    echo date('Y-m-d',mktime(0,0,0,date('m')-1,1,date('Y'))).'<br>';
    echo "上一個月的最後一天".date('Y-m-t', strtotime('-1 month'))."<br>";   //獲取上一個月的最後一天
    echo date('Y-m-d',mktime(0,0,0,date('m'),0,date('Y')))."<br>";


    // echo date('Y-m-d', strtotime("17-05-1"))."<br>";
    // echo date('Y-m-d', strtotime("{$year}-{$month}-1"))."<br>";
    // echo strtotime("{$year}-{$month}-1 +1 month -1 day")."<br>";
    // echo  date('Y-m-d',strtotime("{$year}-{$month}-1 +1 month -1 day"))."<br>";



 ?>