時間日期函數

date_default_timezone_get():獲得系統默認時區函數

date_default_timezone_set($str):設置系統默認時區,中國設置:"PRC"、"Asia/Shanghai"、"Asia/Chongqing"spa

time():獲得當前時間戳,返回自1970年1月1日00:00:00到當前的秒數orm

microtime() / microtime(true):獲得當前微秒數(微秒數+時間戳),加了true參數則結果將以浮點數返回字符串

date($format ,$time):格式化時間戳,輸出爲字符串get

  $time:可選參數,若是沒有指定時間戳,則默認使用本地當前時間戳time()ast

  $format參數可用格式字符串:form

    d  月份中的第幾天,有前導0的兩位數字    01~31 變量

    D  星期中的第幾天,3個字母                Mon~Sundate

    j   月份中的第幾天,沒有前導0             1~31方法

    l(L的小寫)  星期幾,完整的文本          Sunday~Saturday

    N  ISO-8601數字表示星期中的第幾天         1(星期一)~7(星期天)

    S  每個月天數後面的英文後綴,2個字符        st、nd、rd或th,可和j一塊兒使用

    w  星期中的第幾天,數字表示           0(星期天)~6(星期六)

    z  年份中的第幾天              0~365

    W   ISO-8601年份中的第幾周,每週從星期一開始   如:42(當年的第42周)

    F  月份,完整的文本格式             January~December

    m  數字表示的月份,有前導0            01~12

    M  3個字母縮寫表示的月份          Jan~Dec

    n  數字表示的月份,沒有前導0         1~12

    t   給定月份應有的天數            28~31

    L  是否爲閏年                若是是閏年爲1,不然爲0

    o  ISO-8601年份數字,和Y值相同       1999

    Y  4位數字完整表示的年份           1999

    y  2位數字表示的年份              99

    a  小寫的上午和下午值            am或pm

    A  大寫的上午和下午值            AM或PM

    B  Swatch Internet標準時           000到999

    g  小時,12小時格式,無前導0         1~12

    G  小時,24小時格式,無前導0        0~23

    h  小時,12小時格式,有前導0         01~12

    H  小時,24小時格式,有前導0         00~23

    i    分鐘,有前導0               00~59

    s   秒數,有前導0               00~59

    e  時區標識                 如UTC、GMT

    I(i大寫)  是否爲夏令時              若是是夏令時爲1,不然爲0

    O  與格林威治時間相差的小時數        如+0200

    P  與格林威治時間(GMT)的差異,小時和分鐘間有冒號  如+02:00

    T  本機所在的時區              如EST、MDT

    Z  時差偏移量的秒數,UTC西邊的時區偏移量老是負的,UTC東邊的時區偏移量老是正的  -43200~43200

    c  ISO-8601格式的日期            2004-02-12T15:19:21+00:00

    r  RFC822格式的日期              Thu,21 Dec 2000 16:01:07 +0200

    U  從Unix紀元(January 1 1970 00:00:00 GMT)開始至今的秒數  time()

  例:

    echo "當前時間戳:",time(),"<br>";

    echo "當前日期時間:",date("Y-m-d H:i:s",time()),"<br>";

mktime($hour_H ,$minute_i ,$second_s ,$month_n ,$day_j ,$year_Y):將時間日期轉爲Unix時間戳輸出,時間戳是一個長整數包含了從Unix紀元到當前的秒數,該函數的參數能夠從右向左省略,省略的參數會被自動設置成本地的時間日期的當前值

strtotime($strtime ,$time):將時間日期字符串解析爲Unix時間戳輸出,失敗則返回false

  $time:可選參數,若是沒有指定時間戳,則默認使用本地當前時間戳time()

  例1:

    echo "當前日期時間戳:",strtotime ( "now" ),"<br>";

    echo "2018年1月1號12:00:00的時間戳:",strtotime ( "2018-01-01 12:00:00" ),"<br>";

    echo "2000年9月10號的時間戳:",strtotime ( "10 September 2000" ),"<br>";

    echo "明天的這時刻:",date("Y-m-d H:i:s",strtotime( "+1 day" )),"<br>";

    echo "昨天的這時刻:",date("Y-m-d H:i:s",strtotime( "-1 day" )),"<br>";

    echo "下週的這時刻:",date("Y-m-d H:i:s",strtotime( "+1 week" )),"<br>";

    echo "上週的這時刻:",date("Y-m-d H:i:s",strtotime( "-1 week" )),"<br>";

    echo "一週零兩天四小時兩秒後:",date("Y-m-d H:i:s",strtotime( "+1 week 2 days 4 hours 2 seconds" )),"<br>";

    echo "向上最近的一個週一:",date("Y-m-d",strtotime( "last Monday" )),"<br>";

    echo "向下最近的一個週四:",date("Y-m-d",strtotime( "next Thursday" )),"<br>";

    echo "一個月後:",date("Y-m-d",strtotime( "+1 month" )),"<br>";

    echo "一個月前:",date("Y-m-d",strtotime( "last month" )),"<br>";

    echo "十年後:",date("Y-m-d",strtotime( "+10 year" )),"<br>";

  例2:

    $date="2018-01-31 12:30:59";

    echo "指定日期的一個月前的相同時刻:",date("Y-m-d H:i:s",strtotime("-1 month",strtotime($date)));

    

注意:32位系統中,有效的時間戳範圍是格林威治時間1970年01月01日到2038年01月19日03:14:07,複合32位中一個整型變量所能保存的最大值,超過這個時間後整型數值將會溢出,能夠使用DateTime類來解決這個問題:

例:

  $date="2040-01-01 12:00:00";

  $dt=new DateTime($date);

  echo $dt->format('U');  // 2209032000  轉成Unix時間戳

  echo $dt->format('Y-m-d H:i:s');  // 2040-01-01 12:00:00  格式化輸出時間日期

  //將Unix時間戳轉爲datetime

  $dt=new DateTime('@2209032000');  

  echo $dt->format('Y-m-d H:i:s');  // 2040-01-01 12:00:00

  //使用DateTime類的setTimezone方法設置時區

  $dt=new DateTime('@1420029030');  

  $tz=timezone_open('Asia/HONG_KONG');  

  $dt->setTimezone($tz);  

  echo $dt->format('Y-m-d H:i:s'); // 2014-12-31 20:30:30

相關文章
相關標籤/搜索