我搜索了SO,但没有找到任何类似的
<?php
$ref_date = $day['Date']; // $ref_date is picked up from an array
echo $ref_date; // prints "250314" so data is correct
$date = DateTime::createFromFormat('dmy', $ref_date);
var_dump($date); // result FALSE
echo $date->format('Y-m-d'); // Fatal error since $date not created
?>
如果我将$ref_date替换为"250314",则一切正常:
<?php
$date = DateTime::createFromFormat('dmy', "250314"); // DateTime Object created
?>
尝试对$ref_date进行类型转换。(字符串)ref_date美元。PHP 5.3.27 ||时区设置
我一定错过了什么很明显的东西?
你可以试试下面的代码:
//$day['Date'] = '250314'; //this is only for test.
$ref_date = (int)$day['Date'];
if($ref_date>0){
$date = DateTime::createFromFormat('dmy', $ref_date);
echo $date->format('Y-m-d');
} else {
echo '$day[Date] is bad value';
}
问题是由于字符串中尾随空格引起的。回显字符串不会显示以下内容:
<?php
echo $ref_date; // 250314
?>
对提取日期的数组进行vardump显示了训练空间:
<?php
$ref_date = $day['Date']; // $ref_date is picked up from an array
var_dump($day) // ["Date"]=> string(7) "260314 "
// remove trailing space:
$ref_date = rtrim($day['Date'];
// now DateTime Object created!
?>
非常感谢您的评论