PHP函式strtotime 理解筆記

2021-09-08 01:54:45 字數 1553 閱讀 4122

官方手冊裡面對strtotime的描述:

strtotime() 函式將任何英文文字的日期時間描述解析為 unix 時間戳。

那麼意味著這個函式可以把2010-02-28 18:31:33轉換為1267353093這種格式

但是使用它轉換時間戳的時候要注意的是伺服器的date.timezone的配置,在函式說明中有這麼一段話

該函式將使用 tz 環境變數(如果有的話)來計算時間戳。自 php 5.1.0 起有更容易的方法來定義時區用於所有的日期/時間函式。此過程在 date_default_timezone_get()  函式頁面中有說明。

上面的話可以這麼理解:

如果date.timezone配置為空或者為utc(格林威治時間),那麼它就會直接把傳入的時間直接轉換為該時間的unix時間戳(相當於該時間識別為格林威治時間)

如果date.timezone配置了時區,例如asia/shanghai,那麼這個函式就會將傳入的時間認為是配置的時區的當地時間,然後根據該時區與utc(格林威治時間)的時差來算格林威治時間的時間戳。

例如:php.ini配置date.timezone為asia/shanghai;

我們傳入:2010-02-28 18:31:33

函式轉出的時間戳的實際時間為:

2010-02-28 10:31:33

因為asia/shanghai位於 +8區,那麼函式會自動減去了8個鐘頭的時間來得到格林威治時間

<?

phpecho

'2010-02-28 00:00:00';

echo''

;//格林威治時間 0

date_default_timezone_set(

'utc');

echo

gmdate('

y-m-d h:i:s',

strtotime('

2010-02-28 00:00:00

'));

echo''

;//中國上海時間 + 8

date_default_timezone_set(

'asia/shanghai');

echo

gmdate('

y-m-d h:i:s',

strtotime('

2010-02-28 00:00:00

'));

echo''

;//美國洛杉磯時間 - 8

date_default_timezone_set(

'america/los_angeles');

echo

gmdate('

y-m-d h:i:s',

strtotime('

2010-02-28 00:00:00

'));

echo''

;?>

輸出:2010-02

-2800:

00:002010-02

-2800:

00:002010-02

-2716:

00:002010-02

-2808:

00:00

PHP的時間函式strtotime

時間加減 php view plain copy 獲取本地提取年份 1 date date y m d mktime 0,0,0,date m date d date y 1 如果要獲取資料庫中的時間應該如何處理呢?在php文件中找到了乙個很好的函式strtotime,可以對時間進行加減 php v...

使用php的strtotime 函式

我們在日常業務中,針對業務量,經常會採用對資料庫按時間做橫向分表,分表後的查詢往往會涉及到時間問題。例如,我們想查詢某個使用者距離當前時間1個月的訂單情況,在這個時候,我們有些會用到strtotime 函式去處理。但是使用strtotime 需要非常謹慎。我們先看一段 目的是想拿到幾個月以前的年份月...

PHP日期時間函式之strtotime

定義和用法 strtotime strtotime 函式將任何英文文字的日期時間描述解析為 unix 時間戳。語法 strtotime time,now 引數 描述time 規定要解析的時間字串。now用來計算返回值的時間戳。如果省略該引數,則使用當前時間。例項 1 echo strtotime n...