我需要將字符串轉換爲日期格式,但它返回奇怪的錯誤。該字符串是這樣的:在PHP中將特定的字符串轉換爲時間
21 nov 2012
我用:
$time = strtotime('d M Y', $string);
PHP返回的錯誤:
Notice: A non well formed numeric value encountered in index.php on line 11
缺少什麼我在這裏?
我需要將字符串轉換爲日期格式,但它返回奇怪的錯誤。該字符串是這樣的:在PHP中將特定的字符串轉換爲時間
21 nov 2012
我用:
$time = strtotime('d M Y', $string);
PHP返回的錯誤:
Notice: A non well formed numeric value encountered in index.php on line 11
缺少什麼我在這裏?
你調用該函數完全錯誤的。只是通過它
$time = strtotime('21 nov 2012')
第二個參數是傳遞時間戳,新時間是相對的。它默認爲time()
。
編輯:這將返回一個unix時間戳。如果您想要格式化它,請將新時間戳傳遞給date
函數。
您正在使用錯誤的功能,strtotime
只返回自epoch以來的秒數,它不會格式化日期。
嘗試做:
$time = date('d M Y', strtotime($string));
最初,-1是因爲嘗試獲得極差的FGITW答案.Downvote停留是因爲它不回答問題。 – NullUserException
@NullUserException對不起。我正在打字,它提交了...... – Neal
你所有的代碼都會把輸入的字符串吐出來作爲'2012年11月21日',這不是特別有用。 OP似乎想要一種可用於計算而不是演示的日期格式。 – Sammitch
爲日期字符串轉換爲不同的格式:
<?php echo date('d M Y', strtotime($string));?>
strtotime
解析字符串返回所代表的UNIX時間戳。 date
將UNIX時間戳(或當前系統時間(如果未提供時間戳記)轉換爲指定的格式。因此,要重新格式化日期字符串,您需要將其傳遞給strtotime
,然後將返回的UNIX時間戳作爲date
函數的第二個參數傳遞。 date
的第一個參數是所需格式的模板。
Click here瞭解有關日期格式選項的更多詳細信息。
對於更復雜的字符串,使用:
$datetime = DateTime::createFromFormat("d M Y H:i:s", $your_string_here);
$timestamp = $datetime->getTimestamp();
你應該看看['日期時間:: createFromFormat()'](http://www.php.net/manual/en/datetime.createfromformat。 PHP);例如:http://codepad.viper-7.com/0b0edk。這使您可以精確設置您期望的格式,從strtotime()對美式mm-dd格式日期的無意義解析中拯救你 - 如果你仔細想想,它將成爲一種非人道的愚蠢格式。 – NullUserException