Heure locale
Bien que le système utilise l’heure UTC en interne, vos applications affichent généralement l’heure locale , c’est-à-dire la date et l’heure du jour de 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 convertit 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’autre, utilisez les fonctionsGetTimeZoneInformationGetTimeZoneInformationet 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 est converti en heure UTC avant de définir l’heure système.
Lorsque vous appelez SetLocalTime, le système utilise les informations de fuseau horaire actuelles, 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.