Compartilhar via


Hora local

Embora o sistema use a hora baseada em UTC internamente, seus aplicativos geralmente exibirão a hora local, que é a data e a hora do dia para o fuso horário. Portanto, para garantir os resultados corretos, você deve estar ciente de se uma função espera receber uma hora baseada em UTC ou uma hora local e se a função retorna uma hora baseada em UTC ou uma hora local.

As configurações atuais de fuso horário controlam como o sistema se converte entre UTC e hora local. Você pode recuperar as configurações atuais de fuso horário usando a função GetTimeZoneInformation . A função copia o resultado para uma estrutura TIME_ZONE_INFORMATION e retorna um valor que indica se a hora local está atualmente em horário padrão ou horário de verão (DST). Você pode definir as configurações de fuso horário usando a função SetTimeZoneInformation . Para dar suporte a limites para o horário de verão que mudam de ano para ano, use as funções GetTimeZoneInformationForYear, GetDynamicTimeZoneInformation e SetDynamicTimeZoneInformation .

Para recuperar a hora local, use a função GetLocalTime . GetLocalTime converte a hora do sistema em uma hora local com base nas configurações atuais de fuso horário e copia o resultado para uma estrutura SYSTEMTIME . Você pode definir a hora do sistema usando a função SetLocalTime . SetLocalTime pressupõe que você especificou uma hora local e é convertido em UTC antes de definir a hora do sistema.

Quando você chama SetLocalTime, o sistema usa as informações de fuso horário atuais, incluindo a configuração de horário de verão, para executar a conversão. Observe que o sistema usa a configuração de horário de verão da hora atual, não a nova hora que você está configurando. Portanto, para garantir o resultado correto, chame SetLocalTime uma segunda vez, agora que a primeira chamada atualizou a configuração de horário de verão.

Para converter uma hora baseada em UTC em uma hora local, use a função SystemTimeToTzSpecificLocalTime . Para converter uma hora local em uma hora baseada em UTC, use a função TzSpecificLocalTimeToSystemTime .