gpt4 book ai didi

c++ - 在 C/C++ 中在本地时间和 GMT/UTC 之间转换

转载 作者:IT老高 更新时间:2023-10-28 12:43:20 25 4
gpt4 key购买 nike

在 C/C++ 中在本地时间和 UTC 之间转换日期时间的最佳方法是什么?

“日期时间”是指包含日期和时间的一些时间表示。我会对 time_tstruct tm 或任何其他使其成为可能的表示形式感到满意。

我的平台是 Linux。

这是我要解决的具体问题:我得到一对包含儒略日期和一天中的秒数的值。这些值在格林威治标准时间。我需要将其转换为本地时区“YYYYMMDDHHMMSS”值。我知道如何将儒略日期转换为 Y-M-D,显然将秒转换为 HHMMSS 很容易。然而,棘手的部分是时区转换。我确信我可以找到解决方案,但我更愿意找到一种“标准”或“众所周知”的方式,而不是四处走动。


一个可能相关的问题是Get Daylight Saving Transition Dates For Time Zones in C

最佳答案

您应该使用 gmtime/localtimetimegm/mktime 的组合。这应该为您提供在 struct tmtime_t 之间进行转换的正交工具。

对于 UTC/GMT:

time_t t;
struct tm tm;
struct tm * tmp;
...
t = timegm(&tm);
...
tmp = gmtime(t);

本地时间:

t = mktime(&tm);
...
tmp = localtime(t);

tzset() 所做的一切都是从 TZ 环境变量中设置内部时区变量。我认为这不应该被多次调用。

如果你想在时区之间转换,你应该修改struct tmtm_gmtoff

关于c++ - 在 C/C++ 中在本地时间和 GMT/UTC 之间转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/761791/

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