Dengan string ISO 8601, saya menggunakan Moment js dan saat ini melakukan moment("2014-05-08T00:20:40Z").format("HH:mm:ss")
untuk sekadar mendapatkan waktu string "00:20:40"
, tapi
Mengapa hari libur jam 1 dan jam libur pada mor ISO 8601 di Moment js?
Jawaban (1)
Tanggal ISO Anda adalah tanggal UTC. Itulah arti Z
di akhir. Jadi Anda berada 7 zona waktu di sebelah barat UTC.
Waktu Anda memulai adalah 20 menit setelah tengah malam pada tanggal 8. Jika Anda menjalankan kode di Paris, Prancis, Anda akan mendapatkan jawaban yang benar (mengabaikan penyesuaian "waktu musim panas"). Namun, karena Anda berada di 7 zona waktu barat, Anda mendapat pukul 5.20 sore, dan Anda masih berada di hari kalender sebelumnya.
Dengan satu cara memandang sesuatu, tidak ada yang perlu "diperbaiki". Versi waktu lokal berdasarkan tempat Anda berada mewakili titik waktu yang sama dengan waktu ISO UTC asli. Semuanya bekerja dengan baik; representasi default nilai tanggal adalah dalam waktu lokal. Objek primitif Tanggal di JavaScript memiliki API untuk mengakses komponen dalam istilah UTC jika Anda ingin melakukannya.
Anda dapat menggunakan .toISOString()
jika Anda ingin mendapatkan kembali string ISO asli:
moment("2014-05-08T00:20:40Z").toISOString()
Atau, Anda dapat menyertakan tag zona waktu dalam string format Anda:
moment("2014-05-08T00:20:40Z").format("HH:mm:ss zz")
(Perhatikan bahwa "z" dalam string format tidak berarti sama dengan "Z" dalam waktu ISO. Itu hanya karakter khusus pemformatan, dari huruf pertama kata "zona". Dalam string ISO , ini adalah huruf pertama dari kata "nol", artinya waktu berada pada titik nol dari waktu UTC. Beberapa orang menyebutnya "Waktu Zulu" karena "Z".)
z
pada stempel waktu berarti UTC, jadi tebakan terbaik saya adalah Anda tidak berada dalam zona waktu UTC, jadi stempel waktu tersebut diformat ke dalam zona waktu Anda - person Derek Pollard   schedule 28.09.2016