PHP date() 函數用於對日期或時間進行格式化
時間戳記(timestamp),通常是一個字元序列,唯一地識別某一刻的時間
#格式化日期:date()函數將傳回參數timestamp按照指定格式而產生的字串。
語法
#date(format, timestamp)
參數 | 說明 |
format | #必需,規定時間戳記的格式。 |
timestamp | #可選,規定時間戳記。預設是當前時間和日期 |
☆ 時間戳記是一種字元序列,它表示特定事件發生的時間和日期
格式字串可以辨識以下 format 參數的字串
format 字元 | ##說明 | #傳回值範例 | |||||||||||||||||||||||||||||||||||||||||||||||||||
--- | --- | ||||||||||||||||||||||||||||||||||||||||||||||||||||
月份中的第幾天,有前導零的2 位數字 | 01 到 31 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
星期中的第幾天,文字表示,3 個字母 | Mon 到 Sun | ||||||||||||||||||||||||||||||||||||||||||||||||||||
#月份中的第幾天,沒有前導零 | 1 到 31 |
l("L"的小寫字母) | 星期幾,完整的文字格式 | Sunday 到 Saturday |
N | ISO-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 週) |
月 | --- | --- |
F | #月份,完整的文字格式,例如January 或March | # January 到 December |
m | 數字表示的月份,有前導零 | 01 到 12 |
##01 到 12 | M | |
Jan 到 Dec | n | |
1 到 12 | t |
年 | --- | #--- |
L | ||
##是否為閏年 | 如果是閏年為 1,否則為 0 |
時間 | --- | #--- | |||||||||||||||||||||||||||||||||||||||||||||||||||
a | #小寫的上午與下午 | B | |||||||||||||||||||||||||||||||||||||||||||||||||||
000 到 999 | g | ||||||||||||||||||||||||||||||||||||||||||||||||||||
1 到 12 | # |
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 |
P | 與格林威治時間(GMT)的差別,小時與分鐘之間有冒號分隔(PHP 5.1.3 新加) | 例如:+02:00 |
# T | ||
本機所在的時區 | ||
r | RFC 822 格式的日期 | 例如:Thu, 21 Dec 2000 16:01:07 +0200 |
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");
?>
程式執行結果:
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>"; //输入指定的日期 ?>
程式執行結果:輸出時間:2016-05-24 00:00:00
# #1476000300
輸出時間:2016-10-09 16:05:00
1464019200
#實例
實作倒數計時的功能
<?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 參考手冊。
###此參考手冊提供了每個函數的簡要描述和應用實例!