SystemTimeToTzSpecificLocalTime - как получить смещение utc и часовой пояс - PullRequest
0 голосов
/ 09 января 2010

Мне нужно преобразовать системное время utc в местное время и найти соответствующее смещение utc. Я не против получить часовой пояс. Насколько я могу судить, SystemTimeToTzSpecificLocalTime не возвращает никакой информации по ним.

У кого-нибудь есть хороший способ определить смещение UTC и часовой пояс?

1 Ответ

1 голос
/ 10 января 2010

Вот один из способов сделать это.

`

long int    SBias, SSeconds, LSeconds;

SYSTEMTIME STime, LTime; SystemTimeToTzSpecificLocalTime (& TZ, & STime, & LTime);

SSeconds = 3600L * STime.wHour + 60L * STime.wMinute + STime.wSecond;
LSeconds = 3600L * LTime.wHour + 60L * LTime.wMinute + LTime.wSecond;

SBias = 60L * (TZ.Bias + TZ.StandardBias);

SSeconds -= SBias;
if (SSeconds < 0) SSeconds += 24L * 3600L;

if (SSeconds == LSeconds)
{
    tmX.tm_isdst = 0;
    StdTime      = true;
}
else
{
    tmX.tm_isdst = 1;
    StdTime      = false;
}

`

...