(PHP 4, PHP 5, PHP 7, PHP 8)
strtotime — 將任何字符串的日期時(shí)間描述解析為 Unix 時(shí)間戳
$datetime
, int $now
= time()): int
本函數預期接受一個(gè)包含美國英語(yǔ)日期格式的字符串并嘗試將其解析為
Unix 時(shí)間戳(自 January 1 1970 00:00:00 UTC 起的秒數),其值相對于
now
參數給出的時(shí)間,如果沒(méi)有提供
now
參數則用系統當前時(shí)間。
本函數返回的 Unix 時(shí)間戳不包含時(shí)區信息,為了實(shí)現對 "日期/時(shí)間" 進(jìn)行計算,推薦使用功能更強大的 DateTimeImmutable 類(lèi)。
本函數將使用 TZ 環(huán)境變量(如果有的話(huà))來(lái)計算時(shí)間戳。自 PHP 5.1.0 起有更容易的方法來(lái)定義時(shí)區用于所有的日期/時(shí)間函數。此過(guò)程在 date_default_timezone_get() 函數頁(yè)面中有說(shuō)明。
成功則返回時(shí)間戳,否則返回 false
。在 PHP 5.1.0
之前本函數在失敗時(shí)返回 -1
。
在每次調用日期/時(shí)間函數時(shí),如果時(shí)區無(wú)效則會(huì )引發(fā) E_NOTICE
錯誤。參見(jiàn)
date_default_timezone_set()。
示例 #1 strtotime() 例子
<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
?>
示例 #2 失敗檢查
<?php
$str = 'Not Good';
// PHP 5.1.0 之前的版本中和應該改成和 -1 進(jìn)行比較
if (($timestamp = strtotime($str)) === false) {
echo "The string ($str) is bogus";
} else {
echo "$str == " . date('l dS of F Y h:i:s A', $timestamp);
}
?>
注意:
如果給定的年份是兩位數字的格式,則其值 0-69 表示 2000-2069,70-100 表示 1970-2000。 See the notes below for possible differences on 32bit systems (possible dates might end on 2038-01-19 03:14:07).
注意:
有效的時(shí)間戳通常從 Fri, 13 Dec 1901 20:45:54 UTC 到 Tue, 19 Jan 2038 03:14:07 UTC(對應于 32 位有符號整數的最小值和最大值)。
PHP 5.1.0 之前,不是所有的平臺都支持負的時(shí)間戳,那么日記范圍就被限制為不能早于 Unix 紀元。這意味著(zhù)在 1970 年 1 月 1 日之前的日期將不能用在 Windows,一些 Linux 版本,以及幾個(gè)其它的操作系統中。
在 64 位的 PHP 版本中,時(shí)間戳的有效范圍實(shí)際上是無(wú)限的,因為 64 位可以覆蓋最多 2930 億年的范圍。
注意:
不同的分隔符,比如
m/d/y
或d-m-y
會(huì )影響到解析結果:若以反斜線(xiàn) (/
) 為分隔,將會(huì )做為美洲日期m/d/y
來(lái)解析;而當分隔符為短橫線(xiàn) (-
) 或點(diǎn) (.
) 時(shí),則將做為歐洲日期d-m-y
格式來(lái)解析。當年份只有兩位數字,且分隔符為短橫線(xiàn) (-
時(shí),日期字符串將被解析為y-m-d
格式。為了避免潛在的歧義,最好使用 ISO 8601 標準格式 (
YYYY-MM-DD
) 或 DateTime::createFromFormat() 來(lái)表達。
注意:
不建議使用此函數對日期進(jìn)行數學(xué)運算。在 PHP 5.3 及以后版本中,推薦使用 DateTime::add() 和 DateTime::sub() 函數,PHP 5.2 中可以使用 DateTime::modify()。