Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Kelas TimeZoneInfo menyederhanakan pembuatan aplikasi yang sadar zona waktu. Kelas TimeZone ini 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 diketahui oleh sistem.
Dasar-dasar Zona Waktu
Zona waktu adalah wilayah geografis tempat 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 menggunakan waktu hemat siang. Waktu musim panas mencoba memaksimalkan jam 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 hemat siang hari di zona waktu tertentu dapat ditentukan oleh aturan penyesuaian yang tetap atau fleksibel. 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. Jauh lebih umum adalah aturan penyesuaian mengambang, yang menetapkan hari tertentu pada minggu tertentu pada 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 tidak valid dan waktu ambigu. Waktu yang tidak valid adalah waktu yang tidak ada yang dihasilkan dari peralihan dari waktu standar ke waktu hemat siang. 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 ambigu adalah waktu yang dapat dipetakan ke dua waktu berbeda dalam satu zona waktu. Ini dihasilkan dari transisi dari waktu hemat siang 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 sadar zona waktu.
Istilah | Definisi |
---|---|
Aturan penyesuaian | Aturan yang menentukan kapan transisi dari waktu standar ke waktu hemat siang dan kembali dari waktu hemat siang ke waktu standar terjadi. Setiap aturan penyesuaian memiliki tanggal mulai dan berakhir yang menentukan kapan aturan diberlakukan (misalnya, aturan penyesuaian diberlakukan dari 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 bahwa transisi akan terjadi selama periode penyesuaian. Transisi dapat mengikuti aturan tetap atau aturan mengambang. |
Waktu yang ambigu | Waktu yang dapat dipetakan ke dua waktu berbeda dalam satu zona waktu. Ini terjadi ketika waktu diatur mundur, seperti saat transisi dari waktu musim panas sebuah 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 pada minggu tertentu pada 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 hasil transisi dari waktu standar ke waktu hemat siang. Ini terjadi ketika waktu jam dimajukan, seperti selama transisi dari waktu standar zona waktu 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 transisi | 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 hemat siang hari, metode tersebut mengembalikan array kosong.) Setiap TimeZoneInfo.AdjustmentRule objek memiliki properti DaylightTransitionStart dan DaylightTransitionEnd yang menentukan tanggal dan waktu transisi tertentu ke dan dari waktu hemat siang hari. 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 atau dihapus darinya. Akhirnya, registri tidak selalu berisi data zona waktu historis. Misalnya, di Windows XP registri berisi data hanya 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 ditentukan 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 berlanjut 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. Untuk detail tentang membuat zona waktu kustom, lihat Cara: Membuat zona waktu tanpa aturan penyesuaian dan Cara: Membuat zona waktu dengan aturan penyesuaian. Selain itu, Anda dapat menggunakan ToSerializedString metode untuk mengonversi zona waktu yang baru dibuat ke 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 yang disematkan dan Cara: Memulihkan zona waktu dari sumber daya yang disematkan.
Karena setiap zona waktu ditandai oleh 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 waktu dalam zona waktu yang ditunjuk menjadi UTC.
ConvertTime, yang mengonversi waktu dalam satu zona waktu yang ditunjuk ke waktu di zona waktu lain yang ditunjuk.
ConvertTimeBySystemTimeZoneId, yang menggunakan pengidentifikasi zona waktu (alih-alih 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.