Hora local
Aunque el sistema usa internamente la hora basada en UTC, las aplicaciones suelen mostrar la hora local, que es la fecha y hora del día de la zona horaria. Por lo tanto, para garantizar los resultados correctos, debe tener en cuenta si una función espera recibir una hora basada en UTC o una hora local y si la función devuelve una hora basada en UTC o una hora local.
La configuración de zona horaria actual controla cómo el sistema convierte entre utc y hora local. Puede recuperar la configuración de zona horaria actual mediante la función GetTimeZoneInformation . La función copia el resultado en una estructura TIME_ZONE_INFORMATION y devuelve un valor que indica si la hora local está actualmente en horario estándar o horario de verano (DST). Puede establecer la configuración de zona horaria mediante la función SetTimeZoneInformation . Para admitir límites para el horario de verano que cambian de año a año, use las funciones GetTimeZoneInformationForYear, GetDynamicTimeZoneInformation y SetDynamicTimeZoneInformation .
Para recuperar la hora local, use la función GetLocalTime . GetLocalTime convierte la hora del sistema en una hora local en función de la configuración de zona horaria actual y copia el resultado en una estructura SYSTEMTIME . Puede establecer la hora del sistema mediante la función SetLocalTime . SetLocalTime supone que ha especificado una hora local y se convierte en UTC antes de establecer la hora del sistema.
Al llamar a SetLocalTime, el sistema usa la información de zona horaria actual, incluida la configuración del horario de verano, para realizar la conversión. Tenga en cuenta que el sistema usa la configuración del horario de verano de la hora actual, no la nueva hora que está estableciendo. Por lo tanto, para asegurarse del resultado correcto, llame a SetLocalTime una segunda vez, ahora que la primera llamada ha actualizado la configuración del horario de verano.
Para convertir una hora basada en UTC en una hora local, use la función SystemTimeToTzSpecificLocalTime . Para convertir una hora local a una hora basada en UTC, use la función TzSpecificLocalTimeToSystemTime .