当地时间

虽然系统在内部使用基于 UTC 的时间,但应用程序通常会显示 本地时间,即时区的日期和时间。 因此,若要确保结果正确,必须了解函数是需要接收基于 UTC 的时间还是本地时间,以及该函数是返回基于 UTC 的时间还是本地时间。

当前的时区设置控制系统在 UTC 和本地时间之间的转换方式。 可以使用 GetTimeZoneInformation 函数检索当前时区设置。 该函数将结果复制到 TIME_ZONE_INFORMATION 结构,并返回一个值,该值指示本地时间当前是标准时间还是夏令时(DST)。 可以使用 SetTimeZoneInformation 函数设置时区设置。 若要支持从一年到一年的夏令时边界,请使用 GetTimeZoneInformationForYearGetDynamicTimeZoneInformationSetDynamicTimeZoneInformation 函数。

若要检索本地时间,请使用 GetLocalTime 函数。 GetLocalTime 根据当前时区设置将系统时间转换为本地时间,并将结果复制到 SYSTEMTIME 结构。 可以使用 SetLocalTime 函数设置系统时间。 SetLocalTime 假定你指定了本地时间,并在设置系统时间之前转换为 UTC。

调用 SetLocalTime时,系统将使用当前时区信息(包括夏令时设置)来执行转换。 请注意,系统使用当前时间的夏令时设置,而不是设置的新时间。 因此,为了确保结果正确,请再次调用 SetLocalTime,现在第一次调用已更新夏令时设置。

若要将基于 UTC 的时间转换为本地时间,请使用 SystemTimeToTzSpecificLocalTime 函数。 若要将本地时间转换为基于 UTC 的时间,请使用 TzSpecificLocalTimeToSystemTime 函数。