close

PHP strtotime 函數

PHP strtotime 函數的功能是可以將任何英文格式的日期轉換為 Unix 時間戳(timestamp),strtotime 共有兩個參數可以使用,如果不特別設定,strtotime 函數的執行效果與直接跑 time、mktime 類似,雖然 time 與 mktime 也可以轉換簡單的英文時間格式為 Unix 時間戳,例如「10 September 2014」這種較為單純的英文時間格式,time 與 mktime 其實都可以轉換為 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 時間戳。

 

文章轉載 https://www.wibibi.com/info.php?tid=PHP_strtotime_%E5%87%BD%E6%95%B8

arrow
arrow

    Johnson峰 發表在 痞客邦 留言(0) 人氣()