Saya ingin mengubah string tanggal menjadi Date
dengan javascript, gunakan kode ini:
var date = new Date('2013-02-27T17:00:00');
alert(date);
'2013-02-27T17:00:00'
adalah waktu UTC di objek JSON dari server.
Namun hasil kode di atas berbeda antara Firefox dan Chrome:
Firefox kembali:
Wed Feb 27 2013 17:00:00 GMT+0700 (SE Asia Standard Time)
Chrome kembali:
Thu Feb 28 2013 00:00:00 GMT+0700 (SE Asia Standard Time)
Ini berbeda 1 hari, hasil yang benar yang saya harapkan adalah hasil dari Chrome.
Kode demo: http://jsfiddle.net/xHtqa/2/
Bagaimana cara memperbaiki masalah ini untuk mendapatkan hasil yang sama dari keduanya?
javascript
date
timezone
cuongle
sumber
sumber
Date {Wed Feb 27 2013 17:00:00 GMT+0000 (GMT)}
untuk saya di keduanya (Linux).Jawaban:
Format yang benar untuk UTC adalah
2013-02-27T17:00:00Z
(Z untuk Waktu Zulu). TambahkanZ
jika tidak ada untuk mendapatkan string tanggal waktu UTC yang benar.sumber
Ya, sayangnya algoritme penguraian tanggal bergantung pada implementasi. Dari spesifikasi
Date.parse
(yang digunakan olehnew Date
):Untuk membuat
Date
konstruktor tidak (mungkin) menggunakan zona waktu lokal, gunakan string datetime dengan informasi zona waktu, mis"2013-02-27T17:00:00Z"
. Namun, sulit untuk menemukan format yang dapat diurai oleh setiap browser - format ISO tidak dikenali oleh IE <8 (lihat JavaScript: Browser mana yang mendukung penguraian ISO-8601 Date String dengan Date.parse ). Lebih baik, gunakan stempel waktu unix, yaitu milidetik sejak unix epoch , atau gunakan ekspresi reguler untuk memecah string di bagian-bagiannya dan kemudian memasukkannya ke dalamnyaDate.UTC
.sumber
Saya menemukan satu hal di sini. Tampaknya Konsol Inspektur Firefox asli mungkin memiliki bug: Jika saya menjalankan "new Date ()" di Inspektur asli, itu menunjukkan tanggal dengan zona waktu yang salah, lokal GMT, tetapi menjalankan perintah yang sama di Konsol Ekstensi Firebug, tanggal ditampilkan menggunakan zona waktu yang benar (GMT-3: 00).
sumber
Coba gunakan moment.js. Ini berjalan sangat baik dan dengan cara yang sama dengan semua browser. hadir dengan banyak opsi pemformatan. gunakan momen ('tanggal'). format ("") bukan Tanggal Baru ('tanggal')
sumber
Perhatikan bahwa FireFox tidak mengembalikan hasil yang sama seperti Chrome. Sepertinya format yang Anda gunakan di kendo.toString untuk tanggal membuat perbedaan.
Hasil konsol terakhir adalah yang saya butuhkan:
sumber