PHP DateTime对象在构造函数中传递变量时出错



我搜索了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!
?>

非常感谢您的评论

相关内容

  • 没有找到相关文章

最新更新