我有日期字符串,如2009-02-28 15:40:05 AEDST,并希望将其转换为SYSTEMTIME结构.到目前为止,我有:
SYSTEMTIME st;
FILETIME ft;
SecureZeroMemory(&st, sizeof(st));
sscanf_s(contents, "%u-%u-%u %u:%u:%u",
&st.wYear,
&st.wMonth,
&st.wDay,
&st.wHour,
&st.wMinute,
&st.wSecond);
// Timezone correction
SystemTimeToFileTime(&st, &ft);
LocalFileTimeToFileTime(&ft, &ft);
FileTimeToSystemTime(&ft, &st);
Run Code Online (Sandbox Code Playgroud)
但是我的当地时区不是AEDST.所以我需要能够在转换为UTC时指定时区.
我们正试图从获得的时区std::tm同strftime:
char timezone[50];
strftime(timezone, sizeof(timezone), "%Z", &timeCreated);
Run Code Online (Sandbox Code Playgroud)
在iOS上,我们得到的是“ EST”。但是在Windows上,我们会收到“东部夏令时”。有人知道如何以缩写形式一致地获取C ++中的当前时区吗?
我考虑通过简单地选择每个单词中的第一个字符来在时区的全名中进行缩写。但是我检查了缩写词的列表,并注意到我们可以使用像“ Chuuk Time”这样的时区并将其缩写为“ CHUT”。这使得无法进行手动调整。
与问题:Windows时区及其缩写不同?我不需要所有时区和缩写的完整列表。但是,例如,我需要一种系统的方法来使用当前时区strftime。我希望他们使用系统的当前时区和当前本地时间。