相关疑难解决方法(0)

如何获取Windows中任意时区的信息?

理想情况下,我希望能够做的是获取时区的名称,并询问Windows的相应时区信息(偏离UTC,DST偏移,DST开关的日期等).看起来Windows使用TIME_ZONE_INFORMATION结构来保存这种信息.因此,据推测,我想要一个函数,它接受带有时区名称的字符串并返回一个TIME_ZONE_INFORMATION结构.

但是,我能找到的所有函数都是GetTimeZoneInformation(),这些函数为我提供了本地时间的TIME_ZONE_INFORMATION.我需要的是一个函数,它将为我提供任意时区的信息,而不管本地时区是什么.

我看到获取该信息的唯一方法是直接从注册表中获取它,这不太理想.该TIME_ZONE_INFORMATION页面显示了它在注册表中,所以它应该可以从那里获取的信息,但我更喜欢一个正确的系统功能做这件事.这样的功能是否存在,或者我是否必须进行注册表潜水才能获得任意时区的时区信息?

c c++ windows timezone

10
推荐指数
1
解决办法
4282
查看次数

如何用win32 API转换时区?

我有日期字符串,如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时指定时区.

c windows winapi

5
推荐指数
1
解决办法
7537
查看次数

标签 统计

c ×2

windows ×2

c++ ×1

timezone ×1

winapi ×1