Gambaran umum zona waktu

Kelas TimeZoneInfo menyederhanakan pembuatan aplikasi yang sadar zona waktu. Kelas ini TimeZone mendukung bekerja dengan zona waktu lokal dan Waktu Universal Terkoordinasi (UTC). Kelas TimeZoneInfo ini mendukung kedua zona ini serta zona waktu tentang informasi mana yang telah ditentukan sebelumnya dalam registri. Anda juga dapat menggunakan TimeZoneInfo untuk menentukan zona waktu kustom yang tidak memiliki informasi tentang sistem.

Zona waktu penting

Zona waktu adalah wilayah geografis di mana waktu yang sama digunakan. Biasanya, tetapi tidak selalu, zona waktu yang berdekatan terpisah satu jam. Waktu di salah satu zona waktu dunia dapat diekspresikan sebagai offset dari Waktu Universal Terkoordinasi (UTC).

Banyak zona waktu di dunia mendukung waktu musim panas. Waktu musim panas mencoba memaksimalkan waktu siang hari dengan memajukan waktu maju satu jam di musim semi atau awal musim panas, dan kembali ke waktu normal (atau standar) di akhir musim panas atau musim gugur. Perubahan ini ke dan dari waktu standar dikenal sebagai aturan penyesuaian.

Transisi ke dan dari waktu musim panas di zona waktu tertentu dapat ditentukan baik oleh aturan penyesuaian tetap atau mengambang. Aturan penyesuaian tetap menetapkan tanggal tertentu di mana transisi ke atau dari waktu musim panas terjadi setiap tahun. Misalnya, transisi dari waktu musim panas ke waktu standar yang terjadi setiap tahun pada 25 Oktober mengikuti aturan penyesuaian tetap. Yang jauh lebih umum adalah aturan penyesuaian mengambang, yang menetapkan hari tertentu pada minggu tertentu dari bulan tertentu untuk transisi ke atau dari waktu musim panas. Misalnya, transisi dari waktu standar ke waktu musim panas yang terjadi pada hari Minggu ketiga Maret mengikuti aturan penyesuaian mengambang.

Untuk zona waktu yang mendukung aturan penyesuaian, transisi ke dan dari waktu musim panas menciptakan dua jenis waktu anomali: waktu yang tidak valid dan waktu ambigu. Waktu yang tidak valid adalah waktu yang tidak ada yang dibuat oleh transisi dari waktu standar ke waktu musim panas. Misalnya, jika transisi ini terjadi pada hari tertentu pada pukul 02.00 DAN menyebabkan waktu berubah menjadi 03:00 A.M., setiap interval waktu antara pukul 02:00 dan 02:59:59 A.M. tidak valid. Waktu yang ambigu adalah waktu yang dapat dipetakan ke dua waktu yang berbeda dalam satu zona waktu. Ini dibuat oleh transisi dari waktu musim panas ke waktu standar. Misalnya, jika transisi ini terjadi pada hari tertentu pada pukul 02.00 DAN menyebabkan waktu berubah menjadi 1:00 A.M., setiap interval waktu antara pukul 01:00 dan 01:59:59 A.M. dapat ditafsirkan sebagai waktu standar atau waktu musim panas.

Terminologi zona waktu

Tabel berikut mendefinisikan istilah yang umum digunakan saat bekerja dengan zona waktu dan mengembangkan aplikasi yang sadar zona waktu.

Term Definisi
Aturan penyesuaian Aturan yang menentukan kapan transisi dari waktu standar ke waktu musim panas menghemat waktu dan kembali dari waktu musim panas ke waktu standar terjadi. Setiap aturan penyesuaian memiliki tanggal mulai dan berakhir yang menentukan kapan aturan diberlakukan (misalnya, aturan penyesuaian diberlakukan dari tanggal 1 Januari 1986, hingga 31 Desember 2006), delta (jumlah waktu di mana waktu standar berubah sebagai akibat dari penerapan aturan penyesuaian), dan informasi tentang tanggal dan waktu tertentu transisi terjadi selama periode penyesuaian. Transisi dapat mengikuti aturan tetap atau aturan mengambang.
Waktu yang ambigu Waktu yang ambigu adalah waktu yang dapat dipetakan ke dua waktu yang berbeda dalam satu zona waktu. Ini terjadi ketika waktu jam disesuaikan kembali dalam waktu, seperti selama transisi dari waktu musim panas zona waktu ke waktu standarnya. Misalnya, jika transisi ini terjadi pada hari tertentu pada pukul 02.00 DAN menyebabkan waktu berubah menjadi 1:00 A.M., setiap interval waktu antara pukul 01:00 dan 01:59:59 A.M. dapat ditafsirkan sebagai waktu standar atau waktu musim panas.
Aturan tetap Aturan penyesuaian yang menetapkan tanggal tertentu untuk transisi ke atau dari waktu musim panas. Misalnya, transisi dari waktu musim panas ke waktu standar yang terjadi setiap tahun pada 25 Oktober mengikuti aturan penyesuaian tetap.
Aturan mengambang Aturan penyesuaian yang menetapkan hari tertentu dalam minggu tertentu di bulan tertentu untuk transisi ke atau dari waktu musim panas. Misalnya, transisi dari waktu standar ke waktu musim panas yang terjadi pada hari Minggu ketiga Maret mengikuti aturan penyesuaian mengambang.
Waktu tidak valid Waktu yang tidak ada yang merupakan artefak transisi dari waktu standar ke waktu musim panas. Ini terjadi ketika waktu jam disesuaikan kembali dalam waktu, seperti selama transisi dari waktu musim panas zona waktu ke waktu standarnya. Misalnya, jika transisi ini terjadi pada hari tertentu pada pukul 02.00 DAN menyebabkan waktu berubah menjadi 03:00 A.M., setiap interval waktu antara pukul 02:00 dan 02:59:59 A.M. tidak valid.
Waktu transisi terakhir Informasi tentang perubahan waktu tertentu, seperti perubahan dari waktu musim panas ke waktu standar atau sebaliknya, di zona waktu tertentu.

Zona waktu dan kelas TimeZoneInfo

Di .NET, TimeZoneInfo objek mewakili zona waktu. Kelas TimeZoneInfo menyertakan GetAdjustmentRules metode yang mengembalikan array TimeZoneInfo.AdjustmentRule objek. Setiap elemen array ini menyediakan informasi tentang transisi ke dan dari waktu musim panas untuk periode waktu tertentu. (Untuk zona waktu yang tidak mendukung waktu musim panas, metode mengembalikan array kosong.) Setiap TimeZoneInfo.AdjustmentRule objek memiliki DaylightTransitionStart properti dan DaylightTransitionEnd yang menentukan tanggal dan waktu transisi tertentu ke dan dari waktu musim panas. Properti IsFixedDateRule menunjukkan apakah transisi tersebut tetap atau mengambang.

.NET bergantung pada informasi zona waktu yang disediakan oleh sistem operasi Windows dan disimpan dalam registri. Karena jumlah zona waktu bumi, tidak semua zona waktu yang ada diwakili dalam registri. Selain itu, karena registri adalah struktur dinamis, zona waktu yang telah ditentukan sebelumnya dapat ditambahkan ke atau dihapus darinya. Akhirnya, registri tidak selalu berisi data zona waktu historis. Misalnya, dalam Windows XP registri hanya berisi data tentang satu set penyesuaian zona waktu. Windows Vista mendukung data zona waktu dinamis, yang berarti bahwa satu zona waktu dapat memiliki beberapa aturan penyesuaian yang berlaku untuk interval tahun tertentu. Namun, sebagian besar zona waktu yang didefinisikan dalam registri Windows Vista dan mendukung waktu musim panas hanya memiliki satu atau dua aturan penyesuaian yang telah ditentukan sebelumnya.

Ketergantungan TimeZoneInfo kelas pada registri berarti bahwa aplikasi yang sadar zona waktu tidak dapat dipastikan bahwa zona waktu tertentu ditentukan dalam registri. Akibatnya, upaya untuk membuat instans zona waktu tertentu (selain zona waktu lokal atau zona waktu yang mewakili UTC) harus menggunakan penanganan pengecualian. Ini juga harus menyediakan beberapa metode untuk membiarkan aplikasi dilanjutkan jika objek yang diperlukan TimeZoneInfo tidak dapat diinstansiasi dari registri.

Untuk menangani tidak adanya zona waktu yang diperlukan, TimeZoneInfo kelas menyertakan CreateCustomTimeZone metode, yang dapat Anda gunakan untuk membuat zona waktu kustom yang tidak ditemukan di registri. Membuat zona waktu kustom dibahas dalam topik Cara: Membuat zona waktu tanpa aturan penyesuaian dan Cara: Membuat zona waktu dengan topik aturan penyesuaian. Selain itu, Anda dapat menggunakan ToSerializedString metode untuk mengonversi zona waktu yang baru dibuat menjadi string dan menyimpannya di penyimpanan data (seperti database, file teks, registri, atau sumber daya aplikasi). Anda kemudian dapat menggunakan FromSerializedString metode untuk mengonversi string ini kembali ke TimeZoneInfo objek. Untuk detailnya, lihat Cara: Menyimpan Zona Waktu ke Sumber Daya Tersemat dan Cara: Memulihkan zona waktu dari sumber daya yang disematkan.

Karena setiap zona waktu ditandai dengan offset dasar dari UTC, serta oleh offset dari UTC yang mencerminkan aturan penyesuaian yang ada, waktu dalam satu zona waktu dapat dengan mudah dikonversi ke waktu di zona waktu lain. Untuk tujuan ini, TimeZoneInfo objek mencakup beberapa metode konversi, termasuk:

  • ConvertTimeFromUtc, yang mengonversi UTC ke waktu dalam zona waktu yang ditentukan.

  • ConvertTimeToUtc, yang mengonversi UTC ke waktu dalam zona waktu yang ditentukan.

  • ConvertTime, yang mengonversi waktu dalam satu zona waktu yang ditunjuk ke waktu di zona waktu lain yang ditunjuk.

  • ConvertTimeBySystemTimeZoneId, yang menggunakan pengidentifikasi zona waktu (bukan TimeZoneInfo objek) sebagai parameter untuk mengonversi waktu dalam satu zona waktu yang ditunjuk ke waktu di zona waktu lain yang ditunjuk.

Untuk detail tentang mengonversi waktu antar zona waktu, lihat Mengonversi waktu antar zona waktu.

Lihat juga