Pergunta

Tenho a necessidade de converter o tempo do sistema UTC para a hora local e encontrar o deslocamento do UTC correspondente. Eu não me importaria de obter o fuso horário também. Até onde eu sei, o SystemTimeToTzSpecificLocalTime não retorna informações sobre isso.

Alguém tem uma boa maneira de determinar o deslocamento do UTC e o fuso horário?

Foi útil?

Solução

Aqui está uma maneira de fazer isso.

`

long int    SBias, SSeconds, LSeconds;

SystemTime Stime, ltime; SystemTimeTotzSpecificLocalTime (& tz, & stime, <ime);

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;
}

`

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top