2016-02-22 54 views
0

我嘗試使用createFromFormat方法來格式化日期。問題是,如果日期不完整(缺少秒,分鐘或小時),則會導致錯誤。有沒有辦法使這項工作,即使是不完整的日期,如下所示:DateTime :: createFromFormat和未完成日期

$my_sql_date = '2011-01-06 09:39'; 
$date2 = DateTime::createFromFormat('Y-m-d H:i:s', $my_sql_date); 
print_r(DateTime::getLastErrors()); 

Array ( 
     [warning_count] => 0 
     [warnings] => Array () 
     [error_count] => 1 
     [errors] => Array ([16] => Data missing) 
) 

謝謝!

+0

如果您在使用'createFromFormat()'然後,你必須指定你正在傳遞的日期/時間字符串格式相匹配的格式....否則它使'從format'創建一個相當無意義的方法名稱....解決方案是確保字符串匹配格式,即使這意味着將「':00'」附加到該字符串的末尾 –

回答

0

爲什麼不使用默認__construct

$my_sql_date = '2011-01-06 09:39'; 
$date = new DateTime($my_sql_date); 
print_r($date); 

會產生

DateTime Object 
(
    [date] => 2011-01-06 09:39:00.000000 
    [timezone_type] => 3 
    [timezone] => US/Pacific 
) 

您可以事後格式化:

echo $date->format('Y-m-d H:i:s'); 

這將導致

2011-01-06 09:39:00 
1

您可以簡單地使用DateTime對象的構造你的格式。

$incompleteData = '2011-01-06 09:39'; 
$date2 = new DateTime($incompleteData); 

以上將工作。

使用DateTime::createFromFormat。但用這種方法,你的不完整日期總是要符合指定的格式,所以上述方法是你最好的選擇。

$incompleteData = '2011-01-06 09:39'; 
DateTime::createFromFormat('Y-m-d H:i', $incompleteData); 
相關問題