Waktu Lokal

Meskipun sistem menggunakan waktu berbasis UTC secara internal, aplikasi Anda umumnya akan menampilkan waktu lokal, yang merupakan tanggal dan waktu untuk zona waktu Anda. Oleh karena itu, untuk memastikan hasil yang benar, Anda harus mengetahui apakah fungsi mengharapkan untuk menerima waktu berbasis UTC atau waktu lokal, dan apakah fungsi mengembalikan waktu berbasis UTC atau waktu lokal.

Pengaturan zona waktu saat ini mengontrol bagaimana sistem mengonversi antara UTC dan waktu lokal. Anda dapat mengambil pengaturan zona waktu saat ini dengan menggunakan fungsi GetTimeZoneInformation . Fungsi menyalin hasilnya ke struktur TIME_ZONE_INFORMATION dan mengembalikan nilai yang menunjukkan apakah waktu lokal saat ini berada dalam waktu standar atau waktu musim panas (DST). Anda dapat mengatur pengaturan zona waktu dengan menggunakan fungsi SetTimeZoneInformation . Untuk mendukung batasan waktu musim panas yang berubah dari tahun ke tahun, gunakan fungsi GetTimeZoneInformationForYear, GetDynamicTimeZoneInformation dan SetDynamicTimeZoneInformation .

Untuk mengambil waktu lokal, gunakan fungsi GetLocalTime . GetLocalTime mengonversi waktu sistem ke waktu lokal berdasarkan pengaturan zona waktu saat ini dan menyalin hasilnya ke struktur SYSTEMTIME . Anda dapat mengatur waktu sistem dengan menggunakan fungsi SetLocalTime . SetLocalTime mengasumsikan Anda telah menentukan waktu lokal dan mengonversi ke UTC sebelum mengatur waktu sistem.

Saat Anda memanggil SetLocalTime, sistem menggunakan informasi zona waktu saat ini, termasuk pengaturan waktu musim panas, untuk melakukan konversi. Perhatikan bahwa sistem menggunakan pengaturan waktu musim panas dari waktu saat ini, bukan waktu baru yang Anda atur. Oleh karena itu, untuk memastikan hasil yang benar, panggil SetLocalTime untuk kedua kalinya, sekarang panggilan pertama telah memperbarui pengaturan waktu musim panas.

Untuk mengonversi waktu berbasis UTC ke waktu lokal, gunakan fungsi SystemTimeToTzSpecificLocalTime . Untuk mengonversi waktu lokal ke waktu berbasis UTC, gunakan fungsi TzSpecificLocalTimeToSystemTime .