【问题标题】:Api call, transaction timestamps are minus 1 hour compared to the actual system held transactionApi 调用,交易时间戳与系统实际持有的交易相比是负 1 小时
【发布时间】:2022-08-22 08:46:15
【问题描述】:

任何建议表示赞赏。

如果我通过 API 查询我的第 3 方数据库并提取记录上发生的事件的事务时间戳,并使用前端系统将其与相同的时间戳进行比较,则两组时间戳相差一小时。

我想这是因为时间戳存储为 UTC 并且门户网站将其解析为我的本地时间?

我的问题是,如何将 JSON 响应中的每个时间戳转换为本地时间?

这是 JSON 的样子:

[{
\"ID\": \"1234\",
\"Title\": \"This is a title\",
\"data\": [{
        \"value\": 1234
    },
    {
        \"value\": \"2022-08-21 20:51:32\"
    },
    {
        \"value\": \"some text\",
        \"value_raw\": 11111
    },
    {
        \"value_raw\": 11111,
        \"value\": \"some text\"
    },
    {
        \"value\": \"null\"
    }
]
}, {
\"ID\": \"1235\",
\"Title\": \"some text\",
\"data\": [{
        \"value\": 1235
    },
    {
        \"value\": \"2022-08-21 20:47:10\"
    },
    {
        \"value\": \"some text\",
        \"value_raw\": 1111
    },
    {
        \"value\": \"some text\",
        \"value_raw\": 1111
    },
    {
        \"value\": \"null\"
    }
]
}, {
\"ID\": \"1236\",
\"data\": [{
        \"value\": 1236
    },
    {
        \"value\": \"2022-08-21 19:40:33\"
    },
    {
        \"value_raw\": 1111,
        \"value\": \"some text\"
    },
    {
        \"value\": \"some text\",
        \"value_raw\": 1111
    },
    {
        \"value\": \"null\"
    }
],
\"Title\": \"some text\"
}]

这是 JSON API 调用和系统接口检查的对比:

JSON System UI
\"2022-08-21 20:51:32\" \"2022-08-21 21:51:32\"
\"2022-08-21 20:47:10\" \"2022-08-21 21:47:10\"
\"2022-08-21 19:40:33\" \"2022-08-21 20:40:33\"

例如,一个附加的链接问题 - 如果我使用 API 执行以下搜索; 2022-08-20 09:00:00 和 2022-08-21 17:00:00 之间的所有数据。我最终收到了 2022-08-20 08:00:00 和 2022-08-21 16:00:00 之间的所有数据。我真的很想知道如何纠正这些时间变化。

如果我没有提供足够的信息,请告诉我。

    标签: python json api utc


    【解决方案1】:

    您可以使用datetime 转换时间:

    from datetime import datetime, timedelta
    
    original = "2022-08-21 20:51:32"  # original time string
    dt = datetime.strptime(original, "%Y-%m-%d %H:%M:%S")  # convert to datetime object
    new = dt + timedelta(hours=1)  # add an hour
    formatted = new.strftime("%Y-%m-%d %H:%M:%S")  # convert back to formatted string
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-21
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      • 2018-11-14
      • 1970-01-01
      • 2018-06-12
      相关资源
      最近更新 更多