【问题标题】:Calculate time difference between JSON format and PHP time计算JSON格式与PHP时间的时间差
【发布时间】: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 位。除非您有一个要求纳秒级精度的坚如磐石的用例一个经过严格校准的高精度时钟,否则指定/提供/处理这种精度水平是浪费精力。

标签: php json datetime


【解决方案1】:

在 Json 数据包中 - 我还可以进一步降低时间:

"metadata": {
    "time": "2020-11-17T12:36:06.586022488Z",
    "frequency": 868.3,
    "modulation": "LORA",
    "data_rate": "SF12BW125",
    "coding_rate": "4/5",
    "gateways": [{
        "gtw_id": "eui-3133303734002e00",
        "timestamp": 2503673591,
        "time": "2020-11-17T12:36:05.88481Z",
        "channel": 1,
        "rssi": -114,
        "snr": -3.75,
        "rf_chain": 0
    }]

这似乎工作的小数更少。

【讨论】:

  • 不要发布答案以向您的问题添加信息,请编辑原始问题。
  • 对不起 - 会的
  • @Sammitch:我认为你误解了这个贡献。它一个答案,而不是额外的问题材料。 OP将其发布到他们的问题中,然后编辑标题说它是[已解决]。我已经撤消了那个编辑。罗素,如果您愿意,您现在可以单击此答案左侧的勾号,表示它为您解决了问题。欢迎在此处自行回答问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2018-07-15
  • 1970-01-01
  • 1970-01-01
  • 2018-11-18
  • 1970-01-01
相关资源
最近更新 更多