2017-03-22 49 views
1

由於我的數據庫呼應了日期時間值,我現在試圖顯示這個值來在我的表單中的datetime-local字段中編輯它。 從數據庫日期時間vaue設置爲: 22/3/2017 10:00:00php date&strtotime函數導致1970-00-00 00:00值

然而,嘗試使用下面的代碼後,即時通訊留下了這一點: 1970-01-01T01:00:00

$dat = date("Y-m-d\TH:i:s", strtotime($_GET["dat"])); 

如何&爲什麼不能正常工作,此功能在表單字段中顯示'22 /二千零十七分之三10:00' ?

+0

您的日期格式不正確。沒有第22個月。請參閱上面的重複內容以瞭解如何處理這些日期格式。 –

+0

有'$ dat = date('Y-m-d \ TH:i:s',strtotime('22/3/2017 10:00:00'));'相同的結果? –

+0

第二個參數應該是一個整數,更具體地說是一個unix時間戳。如果沒有提供,則使用當前時間戳。正如它現在的'strtotime'會導致錯誤。長話短說,「strtotime」的輸入是錯誤的。 – Andrew

回答

2

使用DateTime::createFromFormat

$date = DateTime::createFromFormat('d/m/Y H:i:s', '22/3/2017 10:00:00'); 
$dat = $date->format('Y-m-d\TH:i:s'); 
echo $dat; 

您的代碼不工作,因爲strtotime使得基於分隔符有關實際格式假設

  • m/d/Y - 美國格式
  • d.m.Yd-m-Y - 歐洲
+1

完美地工作,並感謝關於strtotime的信息! – sanitizer

0

這不起作用,因爲strtotime()只能翻譯特定的日期格式。

檢查manual。有關支持的日期格式的列表,請看here

您的日期格式看起來不包括在支持的我看來。

例子:

strtotime("03/22/2017 10:00:00"); // Works: returns 1490173200 
strtotime("22/3/2017 10:00"); // Doesn't work: returns false 

你必須要麼更改日期格式在你的數據庫或將其格式化爲所支持的格式之一,使其工作。

+0

這是一個比答案更多的評論,因爲它沒有充分解釋爲什麼這是不正確的,也沒有顯示來糾正它 –

+0

已更新。謝謝@JohnConde – Napolux