Jalankan aplikasi di zona waktu lain
Laporan yang jatuh pada hari yang salah, pengingat yang berbunyi satu jam lebih awal, stempel waktu yang terbaca sebagai besok - sebagian besar hanya muncul di zona tempat Anda tidak berada. Ini memberi satu proses selisihnya sendiri, sementara zona sistem Anda tetap persis di tempatnya.
Mengapa jawaban yang biasa tidak membantu
- Mengubah zona waktu Windows mengubahnya untuk semuanya - kalender, log, rapat Anda - dan pada mesin yang dikelola, mengubahnya mungkin bukan hak Anda.
- Menyetel
TZberfungsi untuk sebagian runtime dan tidak untuk yang lain. Aplikasi Windows native yang membacaGetTimeZoneInformationsama sekali tidak akan menyadarinya. - Alat pengembang peramban menimpa zona untuk halaman web, yang sangat bagus, dan tidak relevan untuk aplikasi desktop.
Satu proses, satu selisih
Sesi membawa selisihnya sendiri. Aplikasi menanyakan kepada Windows di zona mana ia berada dan mendapat jawaban itu, sementara setiap program lain di mesin mendapat yang asli.
# Momen yang sama, dilihat dari pantai barat Amerika chrono run "C:\apps\test.exe" --at 2027-01-15T09:00:00 --zone -08:00 # Hanya zonanya - tanggal asli hari ini, jam milik orang lain chrono run "C:\apps\test.exe" --zone +09:00
Kalkulator menjawab separuh lain dari pertanyaan itu - bagaimana sebuah momen sebenarnya terbaca di tempat lain. Konversi mempertahankan instan dan hanya mengubah jam dinding, yang persis merupakan cara sebuah tanggal jatuh pada hari yang salah:
$ chrono calc --base 2027-01-15T09:00:00 --zone +01:00 --to-zone -08:00 Chrono Mock - date calculator base: 2027-01-15T09:00:00 step 1: zone -08:00 -> 2027-01-15T00:00:00 result: 2027-01-15T00:00:00 formats: ISO date 2027-01-15 ISO datetime 2027-01-15T00:00:00-08:00 US 01/15/2027 PL 15.01.2027
Pukul sembilan pagi di Eropa tengah adalah tengah malam di pantai barat Amerika. Instan yang sama, dan laporan harian yang mengelompokkan berdasarkan tanggal lokal akan menempatkannya pada hari yang berbeda tergantung di mana ia berjalan.
Batasan yang jujur, dan di sini batasan itu penting
Zona sesi adalah selisih tetap tanpa waktu musim panas.
Sesi yang disetel ke +01:00 tetap pada +01:00 entah jamnya menunjukkan
Januari atau Juli. Eksekusi yang melintasi transisi nyata karenanya menyimpang satu jam dari apa
yang sebenarnya akan ditunjukkan zona itu, dan memaksa aplikasi melewati transisi waktu musim
panas belum dilakukan alat ini. Kalkulator tanggal menyatakannya, bukan menebak.
- Zona itu melaporkan dirinya sebagai “Chrono Session”, nama yang tidak dikenal
registry Windows mana pun. Apa pun yang memetakan nama itu kembali ke zona - termasuk
TimeZoneInfo.Localmilik .NET - akan beralih ke selisihnya, yang merupakan jawaban yang benar. Aplikasi yang bersikeras pada nama registry tidak akan menemukannya. - Java mengambil zona sesi sebagai selisih. Zona sesi tidak punya waktu musim
panas dan tidak ada kota di baliknya, sehingga Java menamainya menurut selisihnya -
GMT+05:30untuk sesi pada +05:30. - Pada mode Chromium dan Electron, halaman juga membaca zona sesi. Selisih tetapnya sama: setiap halaman dan worker ditempatkan padanya dan memeriksa apa yang dibacanya. Proses utama aplikasi Electron menjalankan JavaScript di Node, yang tidak dijangkau sesi, sehingga ia tetap memakai jam asli.
- Selisih berkisar dari -14:00 sampai +14:00 dalam menit penuh. Apa pun di luar itu ditolak, bukan diam-diam dililitkan.
Mana dari semua itu yang berlaku untuk aplikasi Anda dapat diukur, bukan ditebak. Sesi melaporkan cakupannya sendiri →