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 de la journée pour votre fuseau horaire. Par conséquent, pour garantir des 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 actuels contrôlent la façon dont le système passe de l’heure UTC à 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 heure 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 changent d’année en 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 effectue une conversion en utc avant de définir l’heure système.

Lorsque vous appelez SetLocalTime, le système utilise les informations de 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 deuxième 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 .