Местное время
В то время как система использует время на основе UTC, приложения обычно отображают локальное время, которое является датой и временем дня для часового пояса. Таким образом, чтобы обеспечить правильные результаты, необходимо знать, должна ли функция получать время на основе UTC или локальное время, а также возвращать ли функция время на основе UTC или локальное время.
Текущие параметры часового пояса определяют, как система преобразуется между UTC и локальным временем. Текущие параметры часового пояса можно получить с помощью функции GetTimeZoneInformation. Функция копирует результат в структуру TIME_ZONE_INFORMATION и возвращает значение, указывающее, находится ли локальное время в стандартном или летнем времени (DST). Параметры часового пояса можно задать с помощью функции SetTimeZoneInformation. Чтобы поддерживать границы летнего времени, которые изменяются с года на год, используйте функции GetTimeZoneInformationForYear, GetDynamicTimeZoneInformation и SetDynamicTimeZoneInformation.
Чтобы получить локальное время, используйте функцию GetLocalTime. GetLocalTime преобразует системное время в локальное время на основе текущих параметров часового пояса и копирует результат в структуру SYSTEMTIME. Системное время можно задать с помощью функции SetLocalTime. SetLocalTime предполагает, что вы указали локальное время и преобразовывается в utc, прежде чем задать системное время.
При вызове SetLocalTimeсистема использует текущие сведения часового пояса, включая параметр времени летнего времени, для выполнения преобразования. Обратите внимание, что система использует параметр летнего времени текущего времени, а не новое время. Таким образом, чтобы обеспечить правильный результат, вызовите SetLocalTime второй раз, теперь, когда первый вызов обновил параметр времени летнего времени.
Чтобы преобразовать время в формате UTC в локальное время, используйте функцию SystemTimeToTzSpecificLocalTime. Чтобы преобразовать локальное время в время в формате UTC, используйте функцию TzSpecificLocalTimeToSystemTimeTime.