我搜索了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
?>
如果我用“250314”替换$ ref_date,一切正常:
<?php
$date = DateTime::createFromFormat('dmy', "250314"); // DateTime Object created
?>
尝试使用$ ref_date进行类型转换。 (字符串)$ ref_date。 PHP 5.3.27 ||时区设定。
我一定错过了一些非常明显的东西?
答案 0 :(得分:0)
您可以尝试使用此代码:
//$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';
}
答案 1 :(得分:0)
问题是由于字符串中的尾随空格引起的。 回应字符串并不能说明这一点:
<?php
echo $ref_date; // 250314
?>
Vardumping从中提取日期的数组显示了训练空间:
<?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!
?>
非常感谢您的评论。