程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP strtotime應用經驗之談

PHP strtotime應用經驗之談

編輯:關於PHP編程

strtotime(date("Y-m-01 00:00:00")); // 用來獲得本月的第一天時間戳

在實際PHP strtotime應用中突然有一次碰到轉換過來的時間比實際時間要慢了 8 小時!本以為是 php.ini中的

timezone 設置有誤導致,巡查了一圈最後把問題鎖定在了strtotime 函數上(linux服務器下往往會出問題,WINDOWS服務器返回的數據基本都是正確的)

仔細讀了下PHP手冊,發現第一個參數 time 有格式要求

time

The string to parse, according to the GNU » Date Input Formats syntax. Before PHP 5.0.0, microseconds weren't allowed in the time, since PHP 5.0.0 they are allowed but ignored.

通過對 Date Input Formats 的進一步跟進發現

$ LC_ALL=C TZ=UTC0 date
Mon Mar 1 00:21:42 UTC 2004
$ TZ=UTC0 date +'%Y-%m-%d %H:%M:%SZ'
2004-03-01 00:21:42Z
$ date --iso-8601=ns | tr T ' ' # --iso-8601 is a GNU extension.
2004-02-29 16:21:42,692722128-0800
$ date --rfc-2822 # a GNU extension
Sun, 29 Feb 2004 16:21:42 -0800
$ date +'%Y-%m-%d %H:%M:%S %z' # %z is a GNU extension.
2004-02-29 16:21:42 -0800
$ date +'@%s.%N' # %s and %N are GNU extensions.
@1078100502.692722128

發現我們常用的格式 yyyy-mm-dd HH:ii:ss 並不符合要求。大致看了下,決定采用UTC0 格式隨將以上代碼更新為以下代碼
strtotime(date("Y-m-01 00:00:00")."Z"); // 用來獲得本月的第一天時間戳
至此問題解決!

PHP strtotime應用總結:

我們在開發過程中有時候被系統的支持而忽略了一些細節。就如本例在WINDOWS平台下是不會有這問題,但PHP strtotime應用還是要按規范的走會好些。以避免出現這類問題。
 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved