gpt4 book ai didi

将 GMT 时间转换为纪元

转载 作者:太空宇宙 更新时间:2023-11-04 03:19:00 25 4
gpt4 key购买 nike

我在将 GMT 时间转换为 unix EPOCH 时间时遇到了很多麻烦。

问题似乎与 mktime 有关。我当前的时区提前了 +13 小时。我认为这就是问题所在,mktime 假定本地时间,当它计算一个纪元时,返回的值比实际 GMT 时间早大约 12 小时。

这是我的代码。

time_t t;
struct tm tm;
strptime(s, "%Y-%m-%dT%H:%M:%SZ", &tm);
tm.tm_isdst = -1; // -1 tells mktime figure it out
t = mktime(&tm);

当 s = "2018-01-19T03:35:12Z"时,它计算的纪元为 1516286112而不是应该提前 12 小时左右的纪元。

在 BIOS 时钟设置为 GMT 的系统上,不会发生此错误。所以我只能得出结论,当这种情况为真时,mktime 正在按预期工作。

顺便说一句,该字符串来自一个在文档上显示正确时间的 nosql 服务器。我正在抓取当前纪元并将其与文档中解析的日期进行比较并计算差异。这就是一切失控的地方!

最佳答案

所以问题是 mktime 遵守本地时区。

要解决此问题,请在可用的情况下使用 timegm。或者从这个答案中推出你自己的。

Minimal implementation of gmtime algorithm?

关于将 GMT 时间转换为纪元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48333811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com