我尝试使用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 :(得分: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