【问题标题】:getTimestamp() - Fatal Error when call to a member functiongetTimestamp() - 调用成员函数时的致命错误
【发布时间】:2018-06-05 02:01:29
【问题描述】:

我想将以下字符串转换为日期时间:

<?php
$t = '2017-12-22T11:46:21.647+00:00';

$date = date_create_from_format('d/M/Y:H:i:s', $t);
print_r($date->getTimestamp());

但是,我收到以下错误:

Fatal error: Call to a member function getTimestamp() on a non-object in /home/ubuntu/workspace/src/t02-convertDateTime.php on line 5

有什么建议吗?

【问题讨论】:

  • 您提供给date_create_from_format 的格式需要与您传入的日期时间字符串匹配。您的完全不同。
  • $date = date_create_from_format('Y-m-d\TH:i:s.ue', $t); 匹配您正在使用的格式化日期/时间字符串

标签: php datetime


【解决方案1】:

当你执行这段代码时:

<?php
$t = '2017-12-22T11:46:21.647+00:00';

$date = date_create_from_format('d/M/Y:H:i:s', $t);
var_dump($date);
print_r($date->getTimestamp());

你得到以下输出:

bool(false) 
FATAL ERROR Uncaught Error: Call to a member function getTimestamp() on boolean in /home4/phptest/public_html/code.php70(5) : eval()'d code:6 Stack trace: #0 /home4/phptest/public_html/code.php70(5): eval() #1 {main} thrown on line number 6

看起来这是一个无效的日期格式。您需要获得正确的日期格式。

在手册中,有一条评论说:

没有选项可以直接指定日期格式“c”(例如 2004-02-12T15:19:21+00:00)。解决方法是使用 Y-m-d\TH:i:sT

替代方法是:

<?php
$t = '2017-12-22T11:46:21.647+00:00';

var_dump(date("Y-m-d g:i:s a", strtotime("2017-12-22T11:46:21.647+00:00")));

这给了你:

2017-12-22 6:46:21 am

【讨论】:

    【解决方案2】:

    问题在于您给出格式的方式。试试这个或查看PHP Mannual

    $t = '2017-12-22 11:46:21';
    
    $date = date_create_from_format('Y-m-d H:i:s', $t);
    var_dump($date->getTimestamp());
    

    【讨论】:

      猜你喜欢
      • 2011-08-22
      • 1970-01-01
      • 2012-09-29
      • 2014-02-05
      • 2014-04-29
      • 2015-09-14
      • 2014-10-07
      • 1970-01-01
      相关资源
      最近更新 更多