date
(PHP 4, PHP 5, PHP 7, PHP 8)
date?—?格式化 Unix 時間戳
說明??
date(string?$format,??int?$timestamp?=?null):?string
使用指定整數(shù)?timestamp(Unix 時間戳),或者使用當(dāng)前時間(如果沒有指定時間戳),返回相應(yīng)的指定格式的格式化字符串。換句話說,timestamp?是可選的,默認(rèn)值是?time()。
警告
Unix 時間戳不處理時區(qū)。使用?DateTimeImmutable?及其?DateTimeInterface::format()?格式化方法來格式化攜帶時區(qū)的日期/時間信息。
參數(shù)??
format
DateTimeInterface::format()?接受的格式。
注意:?date()?將始終生成?000000?作為微秒,因為它采用?int?參數(shù),而如果?DateTimeInterface?類型的對象是用微秒創(chuàng)建的, 則?DateTimeInterface::format()?支持微秒。
timestamp
可選的?timestamp?參數(shù)是一個?int?的 Unix 時間戳,如未指定或是?null,參數(shù)值默認(rèn)為當(dāng)前本地時間。也就是說,其值默認(rèn)為?time()?的返回值。
返回值??
返回格式化后的日期字符串。
錯誤/異常??
在每次調(diào)用日期/時間函數(shù)時,如果時區(qū)無效則會引發(fā)?E_NOTICE?錯誤。參見?date_default_timezone_set()。
更新日志??
版本 說明
8.0.0 現(xiàn)在?timestamp?允許為 null。
示例??
示例 #1?date()?示例
<?php
// 設(shè)置要使用的默認(rèn)時區(qū)。
date_default_timezone_set(‘UTC’);
// 打印類似:Monday
echo date(“l”);
// 打印類似:Monday 8th of August 2005 03:12:46 PM
echo date(‘l jS \of F Y h:i:s A’);
// 打印:July 1, 2000 is on a Saturday
echo “July 1, 2000 is on a ” . date(“l”, mktime(0, 0, 0, 7, 1, 2000));
/* 使用格式化參數(shù)中的常量 */
// 打印類似:Wed, 25 Sep 2013 15:28:57 -0700
echo date(DATE_RFC2822);
// 打印類似:2000-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
?>
可以對格式化字符串中的解析字符,在其前面添加反斜線來防止解析。如果帶有反斜線的字符已經(jīng)是特殊字符,需要對反斜線進(jìn)行再次轉(zhuǎn)義。
示例 #2?date()?中的轉(zhuǎn)義字符
<?php
// 打印類似: Wednesday the 15th
echo date(‘l \t\h\e jS’);
?>
可以一起使用?date()?和?mktime()?來查找過去或未來的日期時間。
示例 #3?date()?和?mktime()?示例
<?php
$tomorrow = mktime(0, 0, 0, date(“m”) , date(“d”)+1, date(“Y”));
$lastmonth = mktime(0, 0, 0, date(“m”)-1, date(“d”), date(“Y”));
$nextyear = mktime(0, 0, 0, date(“m”), date(“d”), date(“Y”)+1);
?>
注意:
由于存在夏令時時間,所以此方案相對于直接在時間戳上加/減秒數(shù)要更加可靠。
date()?格式化的一些示例。請注意,即使是對于當(dāng)前來說并不具有特殊含義的字符,也要像對待具有特殊含義的字符那樣進(jìn)行轉(zhuǎn)義,以避免產(chǎn)生非預(yù)期的值,因為可能在將來的 PHP 版本中,這些字符會被賦予特殊的含義。進(jìn)行轉(zhuǎn)義的時候,請確保使用單引號,以避免 \n 這樣的字符被解釋為換行符號。
示例 #4?date()?格式化
<?php
// 假設(shè)今天是 2001 年 3 月 10 日下午 5 點 16 分 18 秒,
// 并且位于山區(qū)標(biāo)準(zhǔn)時間(MST)時區(qū)
$today = date(“F j, Y, g:i a”); // March 10, 2001, 5:16 pm
$today = date(“m.d.y”); // 03.10.01
$today = date(“j, n, Y”); // 10, 3, 2001
$today = date(“Ymd”); // 20010310
$today = date(‘h-i-s, j-m-y, it is w Day’); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date(‘\i\t \i\s \t\h\e jS \d\a\y.’); // it is the 10th day.
$today = date(“D M j G:i:s T Y”); // Sat Mar 10 17:16:18 MST 2001
$today = date(‘H:m:s \m \i\s\ \m\o\n\t\h’); // 17:03:18 m is month
$today = date(“H:i:s”); // 17:16:18
$today = date(“Y-m-d H:i:s”); // 2001-03-10 17:16:18(MySQL DATETIME 格式)
?>
如果需要將日期時間格式化為其他語言,使用?IntlDateFormatter::format()?而不是?date()。
注釋??
注意:
使用?strtotime()?將字符串表示的日期轉(zhuǎn)換為時間戳。另外,一些數(shù)據(jù)庫產(chǎn)品也提供了將日期格式轉(zhuǎn)換為時間戳的函數(shù)(例如 MySQL 中的???UNIX_TIMESTAMP?函數(shù))。
小技巧
請求的開始時間可以從變量?$_SERVER[‘REQUEST_TIME’]?中獲取。