PHP 日期和時間LOGIN

PHP 日期和時間

PHP date() 函數用於對日期或時間進行格式化

 時間戳記(timestamp),通常是一個字元序列,唯一地識別某一刻的時間

#格式化日期:date()函數將傳回參數timestamp按照指定格式而產生的字串。

語法

#date(format, timestamp)

       參數     說明
    format#必需,規定時間戳記的格式。

    timestamp

#可選,規定時間戳記。預設是當前時間和日期

時間戳記是一種字元序列,它表示特定事件發生的時間和日期


格式字串可以辨識以下 format 參數的字串

##         日--- ---  d月份中的第幾天,有前導零的2 位數字01 到 31  D星期中的第幾天,文字表示,3 個字母Mon 到 Sun  j#月份中的第幾天,沒有前導零1 到 31
    format 字元說明#傳回值範例
  l("L"的小寫字母)星期幾,完整的文字格式Sunday 到 Saturday
  NISO-8601 格式數字表示的星期中的第幾天(PHP 5.1.0 新加)1(表示星期一)到 7(表示星期日)
  S每月天數後面的英文後綴,2 個字元st,nd,rd 或 th。可以和 j 一起用
  w星期中的第幾天,數字表示0(表示星期日)到 6(表示星期六)
  z年中的第幾天0 到 365
#############################################################
  星期---#---

  W
ISO-8601 格式年份中的第幾週,每週從星期一開始(PHP 4.1.0 新加的)#例如:42(當年的第42 週)
  月------
##01 到 12  M三個字母縮寫表示的月份Jan 到 Dec  n#數字表示的月份,沒有前導零1 到 12  t給定月份所應有的天數

  F

#月份,完整的文字格式,例如January 或March# January 到 December
  m數字表示的月份,有前導零01 到 12
###28 到 31#### ##########是否為閏年如果是閏年為 1,否則為 0
  年---#---
  L




########################################################################################### #  o#########ISO-8601 格式年份數字。這和 Y 的值相同,只除瞭如果 ISO 的星期數(W)屬於前一年或下一年,則用那一年。 (PHP 5.1.0 新加)###################Examples: 1999 or 2003################  Y###################  Y##### ###4 位數字完整表示的年份######例如:1999 或 2003############  y######2 位數字表示的年份#### ##例如:99 或 03#############  BSwatch Internet 標準時000 到 999  g小時,12 小時格式,沒有前導零1 到 12#
  時間---#---
  a#小寫的上午與下午
  G小時,24 小時格式,沒有前導零0 到 23
#  h小時,12 小時格式,有前導零01 到 12
  H#小時,24 小時格式,有前導零00 到 23
  i有前導零的分鐘數00 到 59>
  s秒數,有前導零#00 到 59>
####################################################################################



#  u

毫秒(PHP 5.2.2 新加)。要注意的是 date() 函數總是回傳000000 因為它只接受 integer 參數,而 DateTime::format() 才支援毫秒。



範例: 654321

  時區------
  e時區識別(PHP 5.1.0 新加)#例如: UTC,GMT,Atlantic/Azores
  I是否為夏令時間如果是夏令時為 1,否則為 0
  O與格林威治時間相差的小時數例如:+0200
本機所在的時區 #例如:EST,MDT(【譯者註】在Windows 下為完整文字格式,例如"Eastern Standard Time",中文版會顯示"中國標準時間")。   Z


  P

與格林威治時間(GMT)的差別,小時與分鐘之間有冒號分隔(PHP 5.1.3 新加)例如:+02:00






#  T


#本機所在的時區
###時差偏移的秒數。 UTC 西邊的時區偏移總是負的,UTC 東邊的時區偏移量總是正的。 ##################-43200 到 43200###############  完整的日期/時間#######-- -######---############  c######ISO 8601 格式的日期(PHP 5 新加)#######2004-02-12T15 :19:21+00:00#############
  rRFC 822 格式的日期例如:Thu, 21 Dec 2000 16:01:07 +0200



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

PHP date() 格式化日期

date() 函數的第一個必要參數 format 規定如何格式化日期/時間。

這裡列出了一些可用的字元:

d - 代表月中的天(01 - 31)

m - 代表月(01 - 12)

Y - 代表年(四位數)

如需了解format 參數中可用的所有字元列表,請查閱我們的PHP Date 參考手冊,date() 函數。

可以在字母之間插入其他字符,例如"/"、"." 或"-",這樣就可以增加附加格式了:

實例

<?php
echo date("Y/m/d") . "<br>";
echo date("Y.m.d") . "<br>";
echo date("Y-m-d");
?>

程式運行結果:

2016/10/09
2016.10.09
2016-10-09


以下是常用時間的字元:

·   h - 有首位零的12小時小時格式

·   i - 帶有首位零的分鐘

·   s - 帶有首位零的秒(00 -59)

·   a - 小寫的午前與午後(am 或pm)


實例


#下面的範例以指定的格式輸出目前時間:

<?php
echo date ("H:i:sa");
?>

程式執行結果:

15:53:06pm

#☆ PHP date()函數會傳回伺服器目前的時間/日期


#獲得時區

如果從程式碼返回的不是正確的時間,有可能是因為您的伺服器位於其他國家或被設定為不同時區。

因此,如果您需要基於特定位置的準確時間,您可以設定要使用的時區。

下面的範例把時區設定為"Asia/Shanghai",然後以指定格式輸出目前時間:

<?php
header("Content-type:text/html;charset=utf-8");    //设置编码
date_default_timezone_set("Asia/Shanghai");
echo "当前时间是 " . date("h:i:sa");

?>
程式執行結果:

目前時間是03:54:49pm############################透過PHP mktime() 建立日期############ #date() 函數中可選的時間戳參數規定時間戳記。如果您未規定時間戳,將使用當前日期和時間(正如上例中)。 ######mktime() 函數傳回日期的 Unix 時間戳記。 Unix 時間戳包含 Unix 紀元(1970 年 1 月 1 日 00:00:00 GMT)與指定時間之間的秒數。 ############文法#########

mktime(hour,minute,second,month,day,year)

下面的例子將使用mktime()函數中一系列的參數來建立日期和時間

<?php
header("Content-type:text/html;charset=utf-8");    //设置编码
$d=mktime(9, 12, 31, 6, 10, 2016);
echo "创建日期是 " . date("Y-m-d h:i:sa", $d);
?>

程式運行結果:

建立日期是2016-06-10 09:12:31am


透過PHP strtotime() 用字串來建立日期

PHP strtotime() 函數用來把人類可讀取的字串轉換為Unix 時間。

語法

#strtotime(time,now)

 下面的範例透過strtotime() 函數建立日期和時間:

<?php
header("Content-type:text/html;charset=utf-8");    //设置编码
$d=strtotime("10:38pm April 15 2016");
echo "创建日期是 " . date("Y-m-d h:i:sa", $d);
?>

程式執行結果:

建立日期是2016-04-15 10:38:00pm


#PHP 在將字串轉換為日期這方面非常聰明,所以您能夠使用各種值:

實例

<?php
$d=strtotime("tomorrow");
echo date("Y-m-d h:i:sa", $d) . "<br>";
$d=strtotime("next Saturday");
echo date("Y-m-d h:i:sa", $d) . "<br>";
$d=strtotime("+3 Months");
echo date("Y-m-d h:i:sa", $d) . "<br>";
?>

程式運行結果:

2016-10-10 12 :00:00am
2016-10-15 12:00:00am
2017-01-09 04:01:09pm

#註:strtotime()並不完美,所以請記得檢查放入其中的字串。


實例

<?php
$startdate = strtotime("Saturday");
$enddate = strtotime("+5 weeks",$startdate);
while ($startdate < $enddate) {
    echo date("M d", $startdate),"<br>";
    $startdate = strtotime("+1 week", $startdate);
}
?>

#程式運行結果:

Oct 15
Oct 22
Oct 29
Nov 05
Nov 12


#實例

用strtotime()函數取得英文格式日期時間字串的時間戳記

<?php
header("Content-type:text/html;charset=utf-8");    //设置编码
echo strtotime("now"),"<br>";           //当前时间的时间戳
echo "输出时间:".date("Y-m-d H:i:s",strtotime("now")),"<br>";  //输出当前时间
echo strtotime("24 May 2016"),"<br>";                     //输出指点时间的时间戳
echo "输出时间:".date("Y-m-d H:i:s",strtotime("24 May 2016")),"<br>";     //输入指定的日期
?>
程式執行結果:


# #1476000300
輸出時間:2016-10-09 16:05:00
1464019200

輸出時間:2016-05-24 00:00:00

#實例

實作倒數計時的功能

<?php
header("Content-type:text/html;charset=utf-8");    //设置编码
$time=strtotime(date("Y-m-d H:i:s"));     //当前的系统时间
$time1=strtotime("2017-10-1  12:00:00");  //国庆节的放假时间
$time2=strtotime("2017-1-1");             //元旦的放假时间
$sub=ceil(($time1-$time)/3600);           //(60秒*60分)/小时
$sub1=ceil(($time2-$time1)/86400);        //(60秒*60分*24小时)/天
echo "离国庆放假时间还有 <strong>$sub</strong> 小时";
echo "<p>";
echo"离元旦放假时间还有 <strong>$sub1</strong> 天";
?>

程式執行結果:

離國慶假期時間還有8564 小時

離元旦放假時間還有-273 天

完整的PHP Date 參考手冊

如需查看所有日期函數的完整參考手冊,請造訪我們的 完整的PHP Date 參考手冊。

###

此參考手冊提供了每個函數的簡要描述和應用實例


下一節
<?php echo date ("H:i:sa"); ?>
章節課件