gpt4 book ai didi

c++ - 获取指定时区的日期和时间

转载 作者:太空宇宙 更新时间:2023-11-04 12:47:12 26 4
gpt4 key购买 nike

我在英国 (GMT+1) 有一台服务器,我需要存储加拿大 (GMT-5) 的日期。这个比较简单。

//gmt_operator, gmt_hr, gmt_min are all grabbed from a database
//These are the data extracted from GTM+5:00 for example.

//Get UTC+00:00 in seconds
time_t ltime;
time(&ltime);
//Add GMT offset
if (gmt_operator == '+')
ltime = ltime + (gmt_hr*60*60) + (gmt_min*60);
else if (gmt_operator == '-')
ltime = ltime - (gmt_hr*60*60) - (gmt_min*60);
else
return NULL;
char buff[9];
struct tm * mydate= gmtime(&ltime);
strftime(buff, sizeof(buff), "%Y%m%d", today);
return buff;

I cant use a tm struct before adding the offset, since if i convert ltime to a tm struct than add the hours and minutes, I might get an overflow of hours and minutes. This can be fixed with mktime(), but mktime will also convert to localtime, which i do not want.

这个解决方案有一个小问题。时间还有1个小时。这是因为当前的夏令时受到影响。函数 localtime() 和 mktime() 以某种方式获取了它,但这些函数只为服务器本地时间获取它,但我需要它用于指定的时间,比如 GMT-5:00 或 GMT+2:00。

这对我来说是全新的领域,我希望能有人鼓励我提出可能的解决方案。我希望这不是重复的,但我还没有找到类似的问题。

最佳答案

到目前为止,您的代码是正确的。 “GMT-5:00”和“GMT+2:00”的含义始终相同,与 DST(夏令时又名夏令时)无关。

换句话说,DST 已经需要包含在这些规范中。

例如,在中欧,您不能只说“GMT+01”。你有 CET 和 CEST,意思是“GMT+01”或“GMT+02”。

关于c++ - 获取指定时区的日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50878723/

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