【发布时间】:2020-11-25 16:50:37
【问题描述】:
我从 JSON 字符串中获取时间为:
"2020-11-17T12:36:05.88481Z", for example.
现在我想获取当前时间和这个 JSON 时间之间的差异。我看过类似的东西:
$start_date = new DateTime();
$since_start = $start_date->diff(new DateTime('2020-11-25 11:25:00'));//but need current time here
所以我需要原始的 Json 格式。 ("2020-11-17T12:36:05.88481Z") 先转换为:
2020-11-17 12:36:05 // 我认为它会处理小数秒。
然后(希望)我可以把它放进去:
$start_date = new DateTime(); // current time
$since_start = $start_date->diff(new DateTime($converted_from_json));
我只是想看看传入的 JSON 获取时间和当前时间之间经过的时间。
【问题讨论】:
-
$foo = new DateTime($that_date_string_from_the_json); -
这行得通:$foo = new DateTime("2020-11-23 09:03:28");但不能使用小数,例如: $foo = new DateTime("2020-11-23T09:03:28.731550803Z");结果:“未捕获的异常:DateTime::__construct(): 无法在位置解析时间字符串 (2020-11-23T09:03:28.731550803Z)...”
-
对不起,我应该将以上内容添加到我的原始帖子中,而不是作为评论吗?
-
补充说明:小数点少一位且有效:$foo = new DateTime("2020-11-23T09:03:28.73155080Z");// 没有错误
-
您作为示例提供的数据在小数秒内的位数方面变化很大。超过 6 位 [微秒] 是否有任何系统会接受它是一个问题,PHP 肯定不会接受超过 8 位。除非您有一个要求纳秒级精度的坚如磐石的用例和一个经过严格校准的高精度时钟,否则指定/提供/处理这种精度水平是浪费精力。