2012-08-22 113 views
4

我有一個日期的字符串:使用日期時間:: CreateFromFormat創建日期對象

25/08/2012 

在這裏,我試圖將其轉換爲一個DateTime對象,以便將它保存到MySQL數據庫。我的後端架構有一個DateOfPrint date列準備好接收這些數據。

這是我已經試過:

$eventDate = DateTime::createFromFormat('d/m/y', $fecha->innertext); 
echo $eventDate; 

echo語句不顯示在屏幕上任何東西,並試圖將其保存到數據庫時,沒有被保存在該列。

有什麼建議嗎?

回答

10

您的$eventDate包含一個打印爲空字符串的布爾值(假)。

您需要使用一個大寫Y.

Ÿ     一年的完整數字表示,4位       例子:1999年或2003
Ÿ     兩一年的數字表示         例如:99或03

而你必須致電DateTime::format();
例如

<?php 
$fecha = new StdClass; 
$fecha->innertext = '25/08/2012'; 

$eventDate = DateTime::createFromFormat('d/m/Y', $fecha->innertext); 
if (false===$eventDate) { 
    die('invalid date format'); 
} 
echo $eventDate->format('Y-m-d'); 

打印

2012-08-25 
+0

你的答案說我應該使用format(),但你的例子是使用createFromFormat()我應該使用哪一個? – sergserg

+0

@Serg - 您可以使用'createFromFormat()'獲取'DateTime'對象,'format()'將該日期對象正確格式化爲MySQL'DATE'列可接受的字符串。 – nickb

+0

感謝您的澄清。 :) – sergserg

3

您需要格式化它一個MySQL列,才能將其插入:

// Need upper case Y here, thanks to VolkerK for pointing that out 
$eventDate = DateTime::createFromFormat('d/m/Y', $fecha->innertext); 
$eventDate = $eventDate->format('Y-m-d'); // I think this is the correct format 

然後你可以使用$eventDate保存日期到數據庫中。

+1

我愛上了這個類的工作。你今天得到我的* 40th * +1! – Fluffeh

+0

@Fluffeh - 哈,謝謝。這真是一個很多人都不知道的偉大的隱藏寶石,它非常有用! – nickb

1

$eventDate是一個對象,而不是一個字符串。您將需要訪問代碼中元素的屬性,以便能夠將其值正確地插入表中或將其回顯出來。在那個筆記上,你可以使用使用var_dump($eventDate);這應該告訴你所有關於該對象的知識。

您可以參考PHP docsm on the DateTime class以獲取可用屬性並查看哪一個最適合您的需求。

0
$eventDate = DateTime::createFromFormat('d/m/Y', $fecha->innertext); 
echo $eventDate->format('Y-m-d'); 
0

簡短的回答

$st_time = date('Y-m-d H:i',$yourdate); 
如果你想只有天月和年使用

這個

$st_time = date('Y-m-d',$yourdate); 
+0

儘管你的例子可能有效,但OP特別要求關於[DateTime類](http://www.php.net/manual/en/class.datetime.php) – MrWhite

相關問題