DateTime :: createFromFormat和不完整的日期

时间:2016-02-22 23:29:01

标签: php dataformat

我尝试使用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 ) 
)

谢谢!

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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