Masalah ini tampaknya disebabkan oleh moment().toISOString() yang diperkenalkan di sini:
http://momentjs.com/docs/#/displaying/as -iso-string/
momen().toISOString();
Saya mungkin tetapi di konsol jika saya melakukannya:
n = moment.utc(new Date('2013-07-18T00:00:00+01:00'))
Ini akan kembali:
Thu Jul 18 2013 00:00:00 GMT+0100 (GMT Daylight Time)
Sekarang jika saya memanggil toISOString( ) di atasnya, tanggalnya tiba-tiba menjadi ke-17:
n.toISOString()
di atas akan mengembalikan tanggal 17 alih-alih 18:
"2013-07-17T23:00:00.000Z"
Seperti yang Anda lihat toISOString
selalu menampilkan waktu dalam UTC (selain menampilkannya dengan cara tertentu).
@ichernev , saya tidak sepenuhnya mengerti maksud Anda? Apakah menampilkan dengan cara tertentu berarti ketika saya lulus di 17, saya harus mendapatkan 18? Bagaimana saya lulus di 18 dan kembali ke 18? Terima kasih.
Itu mungkin berhasil untuk Anda:
> moment().format('YYYY-MM-DD[T]HH:mm:ss.SSSZZ')
'2013-07-23T14:54:20.176-0700'
Atau
> moment().format('YYYY-MM-DD[T]HH:mm:ss.SSS')
'2013-07-23T14:54:20.176'
Jika Anda tidak peduli dengan zona waktu, dan hanya ingin menampilkan waktu.
@ichernev , terima kasih banyak.
Anda dapat menggunakan parameter keepOffset dari toISOString:
toISOString(keepOffset?: boolean): string;
=>
momen().toISOString(benar)
Apakah ini benar?
moment('1970-01-01').toISOString()
keluaran:
1969-12-31T23:00:00.000Z
Saya pikir kebanyakan orang melewati tanggal tertentu ke saat dan memformatnya sebagai toISOString akan mengharapkan tanggal tidak berubah. Mengapa keepOffset tidak default ke true jika itu membuat fungsi berperilaku dengan cara yang lebih dapat diprediksi?
Saya tahu momen sedang konsisten dengan fungsi JavaScript Date toISOString asli sesuai ES2015 tetapi meskipun demikian ini tidak terasa seperti perilaku yang diharapkan.
Komentar yang paling membantu
Itu mungkin berhasil untuk Anda:
Atau
Jika Anda tidak peduli dengan zona waktu, dan hanya ingin menampilkan waktu.