Heure locale

Bien que le système utilise l’heure UTC en interne, vos applications affichent généralement l’heure locale, qui est la date et l’heure du jour pour votre fuseau horaire. Par conséquent, pour garantir les résultats corrects, vous devez savoir si une fonction s’attend à recevoir une heure UTC ou une heure locale, et si la fonction retourne une heure UTC ou une heure locale.

Les paramètres de fuseau horaire actuel contrôlent la conversion du système entre l’heure UTC et l’heure locale. Vous pouvez récupérer les paramètres de fuseau horaire actuels à l’aide de la fonction GetTimeZoneInformation . La fonction copie le résultat dans une structure TIME_ZONE_INFORMATION et retourne une valeur indiquant si l’heure locale est actuellement en temps standard ou en heure d’été (DST). Vous pouvez définir les paramètres de fuseau horaire à l’aide de la fonction SetTimeZoneInformation . Pour prendre en charge les limites de l’heure d’été qui passent de l’année à l’année, utilisez les fonctions GetTimeZoneInformationForYear, GetDynamicTimeZoneInformation et SetDynamicTimeZoneInformation .

Pour récupérer l’heure locale, utilisez la fonction GetLocalTime . GetLocalTime convertit l’heure système en heure locale en fonction des paramètres de fuseau horaire actuels et copie le résultat dans une structure SYSTEMTIME . Vous pouvez définir l’heure système à l’aide de la fonction SetLocalTime . SetLocalTime suppose que vous avez spécifié une heure locale et convertit en UTC avant de définir l’heure système.

Lorsque vous appelez SetLocalTime, le système utilise les informations du fuseau horaire actuel, y compris le paramètre d’heure d’été, pour effectuer la conversion. Notez que le système utilise le paramètre d’heure d’été de l’heure actuelle, et non la nouvelle heure que vous définissez. Par conséquent, pour garantir le résultat correct, appelez SetLocalTime une seconde fois, maintenant que le premier appel a mis à jour le paramètre d’heure d’été.

Pour convertir une heure UTC en heure locale, utilisez la fonction SystemTimeToTzSpecificLocalTime . Pour convertir une heure locale en heure UTC, utilisez la fonction TzSpecificLocalTimeToSystemTime.