PHP: 从日期格式 YYYY-MM-DD 获取时间戳 HH:MM:SS GMT+HH:MM
PHP: Get timestamp from date format YYYY-MM-DD HH:MM:SS GMT+HH:MM
我正在从 *.txt 文件中读取行并获取此样式的字符串(日期格式):
2017-10-19 20:51:54 GMT+08:00
2020-03-31 13:19:31 GMT-08:00
2018-04-10 14:35:17 GMT
使用函数 DateTime::createFromFormat,我想将这些行转换为时间字符串。之后,我想用 getTimestamp(); 获取时间戳。所以,目前我的代码看起来像这样($date 是我的阅读行):
$date = DateTime::createFromFormat("Y-m-d H:i:s", $date);
$timeStamp = $date->getTimestamp();
当我尝试执行此操作时,收到此错误消息:
Fatal error: Uncaught Error: Call to a member function getTimestamp() on bool in ...
有人知道如何解决这个问题吗?
编辑:
关于 Gordon 的评论,我也尝试添加缺失的部分("GMT" => e 和“+08:00”=> P),如下所示:
$date= DateTime::createFromFormat("Y-m-d H:i:s eP", $date);
您收到此错误是因为提供的日期与指定的格式不匹配。
在 createFromFormat() 调用后添加以下行 -
var_dump(DateTime::getLastErrors());
上面一行会return错误。错误消息是 - “尾随数据”。这是因为字符串中的“GMT+08:00”。
为了正确处理它,您应该向 createFormFormat 提供可选的第三个参数,它是时区,它希望它是一个 DateTimeZone 对象。因此,将您的 createFromFormat 函数更新为 -
$timezone = new DateTimeZone('GMT+08:00');
$date = "2017-10-19 20:51:54";
$date = DateTime::createFromFormat("Y-m-d H:i:s", $date, $timezone);
希望对您有所帮助。您必须将日期与时区分开并按上述方式处理。
我正在从 *.txt 文件中读取行并获取此样式的字符串(日期格式):
2017-10-19 20:51:54 GMT+08:00
2020-03-31 13:19:31 GMT-08:00
2018-04-10 14:35:17 GMT
使用函数 DateTime::createFromFormat,我想将这些行转换为时间字符串。之后,我想用 getTimestamp(); 获取时间戳。所以,目前我的代码看起来像这样($date 是我的阅读行):
$date = DateTime::createFromFormat("Y-m-d H:i:s", $date);
$timeStamp = $date->getTimestamp();
当我尝试执行此操作时,收到此错误消息:
Fatal error: Uncaught Error: Call to a member function getTimestamp() on bool in ...
有人知道如何解决这个问题吗?
编辑:
关于 Gordon 的评论,我也尝试添加缺失的部分("GMT" => e 和“+08:00”=> P),如下所示:
$date= DateTime::createFromFormat("Y-m-d H:i:s eP", $date);
您收到此错误是因为提供的日期与指定的格式不匹配。
在 createFromFormat() 调用后添加以下行 -
var_dump(DateTime::getLastErrors());
上面一行会return错误。错误消息是 - “尾随数据”。这是因为字符串中的“GMT+08:00”。
为了正确处理它,您应该向 createFormFormat 提供可选的第三个参数,它是时区,它希望它是一个 DateTimeZone 对象。因此,将您的 createFromFormat 函数更新为 -
$timezone = new DateTimeZone('GMT+08:00');
$date = "2017-10-19 20:51:54";
$date = DateTime::createFromFormat("Y-m-d H:i:s", $date, $timezone);
希望对您有所帮助。您必须将日期与时区分开并按上述方式处理。