Apa zona waktu yang tepat untuk menampilkan waktu untuk acara online?

11

Situs web saya memiliki acara yang dijadwalkan pengguna secara teratur. Saat ini kami menggunakan zona waktu kami EDT (atau EST) sebagai zona waktu dasar untuk semua acara di situs. Saya merasa ini adalah 1) salah, atau 2) sangat membingungkan. Saat ini, kami memiliki pengguna di seluruh AS dan Eropa.

Apakah metode yang tepat untuk melokalkan waktu berdasarkan zona waktu klien? gunakan UTC / GMT?

Terima kasih

JT703
sumber

Jawaban:

4

Jujur, ini adalah salah satu masalah yang sering terlihat ketika memiliki situs web yang digunakan oleh beberapa zona waktu. Ada daftar panjang cara untuk mengatasi pertempuran. Untuk meringkas badp, ada banyak faktor yang berkontribusi terhadap bagaimana zona waktu yang berbeda diproses.

Sebagian besar situs web memilih salah satu dari dua solusi berbeda untuk mengatasi masalah ini:

1) Simpan apa pun yang melibatkan tanggal sebagai UTC dalam basis data ... dan izinkan pengaturan yang ditentukan pengguna untuk pengguna di situs web Anda untuk memilih zona waktu mereka ... atau lakukan sihir geo-ip-lookup untuk mengetahuinya di mana di dunia mereka berada dan menemukan zona waktu yang sesuai ... dan kemudian setiap kali Anda menampilkan tanggal ... pastikan untuk memanggil fungsi apa pun yang diperlukan untuk pelokalan. Hampir setiap bahasa pemrograman memiliki beberapa metode untuk menampilkan tanggal menggunakan zona waktu yang ditentukan. Anda juga harus melakukan ini secara terbalik untuk pengguna memasukkan tanggal. (luangkan waktu setempat & ubah kembali ke UTC untuk penyimpanan DB) Ini mungkin pendekatan yang paling umum. Ini juga akan menghemat banyak waktu Anda dari mencoba "menciptakan kembali roda". Sejauh pengunjung anonim pergi ... Anda bisa A) tetap menggunakan EST / EDT (menggunakan panggilan fungsi bawaan untuk menampilkan yang sesuai) atau B) kembali ke hal Geo-IP-Lookup & memilih zona waktu berdasarkan tebakan yang berpendidikan. Ini juga merupakan ide yang baik untuk selalu menentukan zona waktu tempat Anda menampilkan tanggal / waktu masuk. Yaitu jangan pernah mengatakan "12:00" ... pastikan ia mengatakan "12:00 EDT"

atau 2) Ikuti model stackexchange (dan banyak lainnya) untuk menampilkan perbedaan antara sekarang & ketika pos dibuat. yaitu alih-alih "diposting pada tanggal x" ... Anda akan melakukan "x jam yang lalu" atau "x hari x jam yang lalu" dll ... atau untuk tanggal mendatang ... "dalam 6 hari 14 jam ..." Ini dengan cepat menjadi lebih umum untuk banyak situasi ... tetapi tidak ideal untuk jadwal tipe kalender.

Tentu saja ... Anda masih dapat mengadopsi semacam hibrida dari keduanya ... dan Anda mungkin perlu melangkah lebih jauh dan menyimpan tanggal sebagai utc ... tetapi juga menyimpan zona waktu tertentu untuk suatu acara. Pada akhirnya, keputusan ada di tangan Anda.

TheCompWiz
sumber
8

Inilah masalahnya: UE dan AS tidak menyalakan dan mematikan DST pada saat yang sama; Maret ini, ada perbedaan tiga minggu antara peristiwa-peristiwa ini.

Inilah yang terjadi selama periode ini. Katakanlah Anda memiliki acara setiap hari pada waktu yang sama dan, karena Anda berbasis di AS, Anda akan menyesuaikan waktu menggunakan US DST.

Day (2001)   United States   Europe      United Kingdom   Global    Time delta
March 5th    EST 1500        CET  2100   GMT 2000         GMT 2000        +23h
March 6th    EDT 1500        CET  2000   GMT 1900         GMT 1900        +24h
March 7th    EDT 1500        CET  2000   GMT 1900         GMT 1900        +24h
..............................................................................
March 26th   EDT 1500        CET  2000   GMT 1900         GMT 1900        +24h
March 27th   EDT 1500        CEST 2100   BST 2000         GMT 1900        +24h

Mari kita menganalisis semua kemungkinan:

  • Jika Anda menampilkan waktu dalam zona waktu global dan menyebutnya UTC , yang terasa seperti hal yang tepat untuk dilakukan, Anda akan membingungkan pelanggan Amerika Anda, yang akan melihat waktu UTC yang berbeda (kemarin 8 malam, hari ini 19:00) untuk waktu jam dinding yang sama (kemarin jam 3 sore, hari ini jam 3 sore lagi), dan kemudian pelanggan Anda yang berbasis di UE, yang tidak melihat jam waktu yang diposting berubah dan masih harus mengubah waktu acara jam dinding mereka.

  • Jika Anda menampilkan waktu dalam zona waktu global dan menyebutnya GMT , selain membingungkan pelanggan AS, Anda juga akan membingungkan pelanggan Inggris yang beralih dari GMT ke BST. Adalah berlawanan dengan intuisi untuk memahami bahwa EDT 1500 dan EST 1400 adalah momen yang sama ; sekarang terjemahkan ke BST / GMT (dengan masalah tambahan bahwa Anda tidak akan menunjukkan waktu BST di bagian mana pun dari situs).

  • Jika Anda menampilkan zona waktu dalam zona waktu UE (saya menggunakan CET / CEST untuk menghindari kebingungan GMT / UTC), itu jelas akan sangat membingungkan bagi pelanggan AS Anda, yang melihat waktu acara bolak-balik dua kali namun tidak mengalami tembok waktu jam berubah sendiri. Sementara pelanggan AS Anda mungkin siap untuk beralih pertama (setelah semua mereka harus mengganti jam dinding mereka pada hari yang sama), mereka akan terkejut dengan yang terakhir.

  • Jika Anda menampilkan zona waktu di zona waktu AS (seperti EST / EDT ), Anda akan memiliki situasi yang tepat dijelaskan di atas, tetapi dicerminkan!

Ini seperti situasi tanpa harapan! Inilah cara saya mengatasinya setelah empat tahun melalui omong kosong ini (jelas dua kali setahun): "membentuk zona waktu."

Saya benar-benar dalam situasi seperti yang digambarkan di atas, jadi saya membuat "NYT" (Zona Waktu New York) sehingga saya bisa menulis "1500 NYT" berarti "15:00 dalam zona waktu apa pun yang kebetulan digunakan New York."

Ini memiliki keuntungan bahwa, selama pengguna tahu bahwa waltzer DST terjadi, ia memiliki cara yang sangat sederhana untuk mengubah bolak-balik ke zona waktu mereka sendiri: google " time in new york " untuk melihat jam berapa sekarang di NY , lalu selesaikan dari sana. Anda bahkan bisa mendapatkan kemewahan dan menggunakan layanan berbasis geolokasi seperti time.is/15:00_in_New_York .

Perhatikan bahwa, walaupun Anda dapat menggunakan nama singkatan zona waktu di time.is, saya mendorong Anda untuk tidak melakukannya, karena mereka sendiri cukup bingung tentang hal itu: EST memiliki waktu yang sama dengan EDT‽

Anda dapat memberi tahu pengguna tentang DST dengan sedikit uraian singkat, menautkan ke layanan web konversi waktu yang tepat untuk membantu orang keluar. Idealnya semua cap waktu harus memiliki opsi untuk dikonversi menjadi waktu lokal.


Ketika semua dikatakan dan dilakukan, Anda harus menyadari bahwa saya telah mengabaikan gajah di kamar sepanjang waktu, dan itulah solusi "hitung mundur" yang telah Anda terapkan. Tidak ada yang membingungkan tentang "dalam 1 hari 2 jam 45 menit 47 detik" (dan jika Anda yakin Anda tidak membutuhkan ketelitian sebanyak itu, Anda mungkin ingin berpikir lagi ).

Tentu, dalam pengalaman saya, saya tidak pernah memiliki kemewahan apa pun yang bukan teks statis, jadi saya harus menangani kekacauan luar biasa seperti yang digambarkan di atas (dan itu hanya permulaannya ! Bagaimana dengan wilayah selatan, yang membuat DST mundur?) , tetapi untuk kasus penggunaan Anda, ini terdengar seperti solusi dengan potensi kebingungan yang paling kecil. Anda mungkin mendapatkan dua utas dalam setahun yang menanyakan tentang acara "dalam 23 jam" dan "dalam 25 jam" sementara biasanya dihitung mundur dari "dalam 24 jam", tetapi hanya itu.

badp
sumber
apakah pelokalan bukan pilihan yang baik? Saya merasa seperti itu adalah cara terbaik untuk pergi, jika selalu akurat.
JT703
@ jt703 Saya pikir pelokalan (à la time.is) tidak tersedia untuk Anda karena beberapa alasan, karena, selama ini berfungsi, sepertinya solusi yang cukup bagus. Namun, DST mungkin membuat pengguna Anda tidak siap. :)
badp