簡體   English   中英

php strtotime function

[英]php strtotime function

我使用 PHP 的 strtotime function 將日期從一種格式轉換為另一種格式我有以下

$date = "12-22-2011";

 echo $newDateFormat = date("Y-m-d", strtotime($date) );

// Output 1970-01-01
// But when i replace "-"  with "/" I get proper output
$date = "12/22/2011";

echo $newDateFormat = date("Y-m-d", strtotime($date) );

// Output 2011-12-22 

為什么這樣? 還是有任何其他 function 可以接受任何內容並轉換為正確的日期格式?

strtotime文檔:

m/d/y 或 dmy 格式的日期通過查看各個組件之間的分隔符來消除歧義:如果分隔符是斜杠 (/),則假定為美式 m/d/y; 而如果分隔符是破折號 (-) 或點 (.),則假定為歐洲 dmy 格式。

本質上,帶連字符的日期被假定為 dmy,而不是 mdy。

對於自定義解析,請使用DateTime::createFromFormat()

使用諸如dd-mm-yyyymm-dd-yyyy類的格式不是很安全: strtotime()無法確定您使用的是哪一個(想想06-11-2011 ,例如:是在六月,還是在 11 月?)

使用strtotime() ,您通常最好使用yyyy-mm-dd格式。


如果要以特定的已知格式解析日期,則應使用DateTime::createFromFormat() - 請注意,它僅適用於 PHP >= 5.3。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM