gpt4 book ai didi

将时间(由字符串表示)从一个时区转换为另一个时区

转载 作者:行者123 更新时间:2023-12-01 13:46:35 24 4
gpt4 key购买 nike

在我的应用程序中,我将用户指定的时间转换为 time_t 格式并存储。稍后,我会在本地时区显示这个时间。这是我的测试代码:

int main() {
const char* INPUTFMT = "%b %d, %Y %H:%M:%S %Z";
const char* SAMPLETIME = "Feb 19, 2016 01:00:00 EST";

struct tm tm = {0};
char* val = strptime(SAMPLETIME, INPUTFMT, &tm);

time_t st = mktime(&tm);

const struct tm* t1 = localtime(&st);
static const char* OUTPUTFMT = "%b %d, %G %I:%M:%S %p %Z";
char buf[100];
strftime (buf, 100, OUTPUTFMT, t1);

printf("%s\n", buf);

return 0;
}

指定的时区是 EST,我的本地时区是 PST。

我遇到的问题是,虽然我的本地时区与指定的时区不同,但我看到的时间相同,只是 EST 被 PST 取代。

我想知道我做错了什么。问候。

最佳答案

我的系统 (OS X) 上 strptime 的手册页说:

The %Z format specifier only accepts time zone abbreviations of the local time zone, or the value "GMT". This limitation is because of ambiguity due to of the over loading of time zone abbreviations. One such example is EST which is both Eastern Standard Time and Eastern Australia Summer Time.

因此这一行:

char* val = strptime(SAMPLETIME, INPUTFMT, &tm);

默默地忽略输入中的“EST”,而是使用您当前的本地时间偏移量。因此,当您在此处将其从当前本地时间转换回来时:

strftime (buf, 100, OUTPUTFMT, t1);

您将获得从当前本地时间到 UTC 时间再回到当前本地时间的往返时间。

请参阅此中性语言 stack overflow answer有关如何处理时区的更多建议。

关于将时间(由字符串表示)从一个时区转换为另一个时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35567026/

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