首頁  >  文章  >  後端開發  >  php中strtotime時間函數使用詳解

php中strtotime時間函數使用詳解

WBOY
WBOY原創
2016-07-25 08:59:201026瀏覽
  1. echo date("Y-m-d H:i:s", strtotime("feb", strtotime("2011-03-31")));
複製程式碼

程式會輸出: 2011-03-03 00:00:00。 從表象來看,這個結果也許不一定是我們想要的,但這也算是一種解決方案,這種方案又是由什麼決定的呢? strtotime函數在執行月份的計算 時只計算了月份,相當於直接將月份設定為指定的月份的值,而如jan,january都會有一個對應內部數值。

2、 first關鍵字 first是一個輔助型的關鍵字,它可以與星期,天等可以指定確認值的關鍵字組合使用,如求2011年的第一個星期天:

  1. echo date("Y-m-d H:i:s", strtotime("second sunday", strtotime("2011-01-01")), "
    ";
複製代碼

在PHP的源碼中,對於first與星期和天的組合使用是分開的,即first day對應一個處理操作, 在最終的C實作中,天的值指定為1,即time結構中的d欄位指定為1,如下碼:

  1. switch (time->relative.first_last_day_of) {
  2. case 1: /* first */
  3. time->d = 1
  4. break;
  5. case 2: /* last */
  6. time->d = 0;
  7. time->m++;
  8. break;
  9. }
複製程式碼

3、previous和next關鍵字 與first類似,previous關鍵字可以與星期,天組合使用,表示指定時間的前一個星期幾或前一天。如下所示程式碼:

  1. echo date("Y-m-d H:i:s", strtotime("previous sunday", strtotime("2011-02-01"))), "
    ";
複製程式碼

程式會輸出:2011-01-30 00:00:00 程序求2011-02-01的前一個星期日。 next關鍵字與previous相反,它表示下一個星期幾或後一天。

4、 last關鍵字 last關鍵字既可以作為上一個,也可以作為最後一個。如求上一個星期日的日期:

  1. echo date("Y-m-d H:i:s", strtotime("last sunday", strtotime("2011-02-05"))), "
    ";
複製程式碼

程式會輸出: 2011-01-30 00:00:00 當程式作為最後時,其應用程式場景是指定日期所在月的最後一天,相當於date(”t”)的結果。如求2000年2月的最後一天:

  1. echo date("Y-m-d H:i:s", strtotime("last day", strtotime("2000-02-01"))), "
    ";
複製程式碼

first、previous、last和this關鍵字在re檔案中屬於同一組。

5、 back和front關鍵字 這兩個關鍵字是對一天中的小時的向前和向後操作,其呼叫格式如下:

  1. echo date("Y-m-d H:i:s", strtotime("back of 24", strtotime("2011-02-01"))) , "
    ";
  2. echo date("Y-m-d H:i:s", strtotime("front of 24", strtotime("2011-02-01"))), "
    " ;
複製程式碼

back表示將時間設定指定小時值的後一個小時的15分的位置。如果是24點,則算到第二天的0點15分。 front表示將時間設定指定小時值的前一個小時的45分的位置。如果是0點,則算前一天的23點45分。 上面的程式碼輸出:2011-02-02 00:15:00 2011-02-01 23:45:00。 其中back of和front of後接的陣列必須大於等於0且小於等於24。 strtotime函數的實作基本原理 官方文件對於strtotime函數的說明是這樣的:本函數預期接受一個包含美國英語日期格 式的字串並嘗試將其解析為 Unix 時間戳 (自 January 1 1970 00:00:00 GMT 起的秒數 ),其值相對於 now 參數給出的時間,如果沒有提供此參數則用系統當前時間。 這是一個標準PHP內建函數,從PHP4就已經存在。 strtotime函數是以一個擴展的方式載入進來的,在ext/date目錄下有其全部實作。 作為一個標準的內建函數,其定義格式也是標準 的,如下:

  1. PHP_FUNCTION(strtotime)
  2. // 處理輸入,對於是否有第二個參數有沒的處理
  3. // 呼叫相關函數,實現字串的解析與結果計算
  4. // 回傳結果
  5. }
複製程式碼

在輸入處理中,先辨識兩個參數都存在的情況並進行處理,如果不是此種狀態,則處理第二個參數不存在的情況, 如果都沒有,則報錯,返回FALSE。 1 2 下一頁 尾頁



陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn