Chrono Mock
BahasaBahasa Indonesia

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 TZ berfungsi untuk sebagian runtime dan tidak untuk yang lain. Aplikasi Windows native yang membaca GetTimeZoneInformation sama 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.Local milik .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:30 untuk 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 →

Cobalah