PHP strtotime 函數

PHP strtotime 函數的功能是可以將任何英文格式的日期轉換為 Unix 時間戳(timestamp),strtotime 共有兩個參數可以使用,如果不特別設定,strtotime 函數的執行效果與直接跑 timemktime 類似,雖然 timemktime 也可以轉換簡單的英文時間格式為 Unix 時間戳,例如「10 September 2014」這種較為單純的英文時間格式,timemktime 其實都可以轉換為 Unix 時間戳,但較為複雜的時間格式如「last Monday」、「next Thursday」這種英文描述的方式,就必須使用 PHP strtotime 函數來處理,strtotime 函數可以支援的時間格式非常多,功能可以說是非常的強大,是 PHP 設計師在做日期轉換以及計算時很好的工具。

PHP strtotime 函數基本語法
int strtotime ( string $time , int $now = time() )
strtotime 的第一個參數 string $time 是字串格式,可以接受非常多種日期的字串格式,可參考 PHP 官方網站上的這篇《Supported Date and Time Formats》所提到的日期格式,第二個參數則是選填項目,用來計算返回的時間戳,如果未設定,strtotime 會自動根據目前的時間戳來計算,不過這個算是進階功能,普通情況不太會用到。

如果 PHP strtotime 成功將日期字串轉換為 Unix 時間戳便會返回 timestamp 結果,如果失敗就會返回 FALSE,在 PHP 5.1.0 之前的版本,轉換失敗會返回 -1 而不是 FALSE,使用時請多注意使用的主機 PHP 版本。

PHP strtotime 函數範例一、基本轉換
<?php
  $NowTime=date("Y-m-d H:i:s");
  echo strtotime("$NowTime,now"), "<br>";
  echo strtotime("now"), "<br>";
  echo strtotime("10 September 2014"), "<br>";
  echo strtotime("+1 day"), "<br>";
  echo strtotime("+1 week"), "<br>";
  echo strtotime("+2 week 3 days 2 hours 5 seconds"), "<br>";
  echo strtotime("next Thursday"), "<br>";
  echo strtotime("last Monday"), "<br>";
?>
輸出結果
1412738569
1412738569
1410307200
1412824969
1413343369
1414214574
1412812800
1412553600
範例一提供各式各樣的英文日期格式給 strtotime 函數處理,原則上這些格式都是 strtotime 函數所接受的,特別注意從 +1 day 開始的地方,可以明顯的看到 PHP strtotime 強大的地方,它會自己計算我們所賦予的時間差,無論是 +1 天、+1 周,甚至是 + 幾周、幾天、幾小時、幾秒鐘,strtotime 都可以順利算出並轉換為我們所要的 Unix 時間戳,還有哪些格式可以用?請參閱上段提到 PHP 官方網站的內容。

PHP strtotime 函數範例二、來回轉換
<?php
  $t='2014-10-18 11:17:23';
  echo $t.'<br>';
  echo strtotime($t).'<br>';
  echo date("Y-m-d H:i:s",strtotime($t)).'<br><br>';
 
  $t2='October 18 2014 11:17:23AM';
  echo $t2.'<br>';
  echo strtotime($t2).'<br>';
  echo date("Y-m-d H:i:s",strtotime($t2));
?>
輸出結果
2014-10-18 11:17:23
1413631043
2014-10-18 11:17:23

October 18 2014 11:17:23AM
1413631043
2014-10-18 11:17:23
為了讓各位可以清楚的看出來 PHP strtotime 函數轉換的結果,我們用了兩組不同的時間格式讓它轉換,第一種是比較常見的時間格式,先轉換為 Unix 時間戳,再用 PHP date 函數轉換回來,結果是一樣的。接著第二組的時間格式比較特別,用的是美式時間格式,經過 strtotime 函數的處理,取得了相同的 Unix 時間戳,再用 PHP date 函數轉換回來,可以獲得與第一組相同的時間,證明 PHP strtotime 函數在處理不同的時間格式時(必須為可接受的格式),可以順利轉換為正確的 Unix 時間戳。

更多 PHP 時間計算
© Copyright wibibi.com 網頁設計教學百科 基礎的網頁設計規劃、資料庫與程式設計 Since 2012