我堅信strtotime()
應該避免有格式可用。
$from_format = 'Y-m-d H:i:s';
$to_format = 'd M, Y h:i:s A';
$date = '2016-11-11 14:26:03';
echo DateTime::createFromFormat($from_format, $date)->format($to_format);
輸出:
11 Nov, 2016 02:26:03 PM
爲什麼你的代碼沒有我不能肯定地說,它在這裏很好的作品,但您可以診斷一點點。我假設你的情況下,因爲strtotime()
未能轉換,返回-62169984000
這實際上是0000-00-00 00:00:00
但由於秒,分,日和月不允許爲0
,計算髮生在0000-00-00 00:00:00
減1天和1個月等等30 Nov -0001 12:00:00
所以它會出現你的$obj->suspend_datetime
不包含正確的數據。
我已經寫了2個個小功能共享,將使這整個的考驗就好辦了:
function strtodatetime($date, $format = 'Y-m-d H:i:s'){
return ($d = DateTime::createFromFormat($format, $date)) && $d->format($format) == $date ? $d : false;
}
function strtounixtime($date, $format = 'Y-m-d H:i:s'){
return ($d = DateTime::createFromFormat($format, $date)) && $d->format($format) == $date ? $d->getTimestamp() : 0;
}
echo ($dt = strtodatetime($date)) ? $dt->format($to_format) : 'invalid format';
echo date('d M, Y h:i:s A', strtounixtime($obj->approve_datetime));
在你的情況下,使用strtounixtime()
(更好的strtotime()
)它會轉化回unix時代如果失敗了。
看到這個http://php.net/manual/en/function.date.php#refsect1-function.date-parameters – Karthi
它因爲不同的數據庫和sql之間的默認格式 –