PHP未知日期时间格式

时间:2017-02-10 17:44:17

标签: php datetime

我有一个DateTime格式:2016-04-06T15:17:42.97074Z我是在twitch api上从v5获得的。

我需要将其转换为使用PHP进行比较的unix时间戳。

目前我正在尝试转换为DateTime对象:$dateTime = DateTime::createFromFormat(DateTime::ISO8601, $json["created_at"]);,我也尝试使用DateTime::W3C,但无济于事。

$json["created_at"]肯定包含转换时间,因为echo $json["created_at"]会返回时间。

1 个答案:

答案 0 :(得分:0)

createFromFormat在被要求解析ISO8601时拒绝小数秒,但您可以简单地使用该字符串构造DateTime,例如。

$str='2016-04-06T15:17:42.97074Z';
//this will work... 
$dt1=new \DateTime($str);
//but this won't...
$dt2=\DateTime::createFromFormat(\DateTime::ATOM, $str);

var_dump($dt1);
var_dump($dt2);

这将在php 5.6.0 - 5.6.30, hhvm-3.15.4 - 3.17.1, 7.0.0 - 7.1.1

中输出以下内容
object(DateTime)#1 (3) {
  ["date"]=>
  string(26) "2016-04-06 15:17:42.970740"
  ["timezone_type"]=>
  int(2)
  ["timezone"]=>
  string(1) "Z"
}
bool(false)

另见PHP DateTime::createFromFormat doesn't parse ISO 8601 date time