Saya menggunakan kode berikut untuk mengonversi waktu-sisi-sisi server ke waktu lokal menggunakan moment.js.
moment(moment('Wed, 23 Apr 2014 09:54:51 +0000').format('lll')).fromNow()
Tapi saya mendapatkan:
Peringatan penghentian: saat konstruksi jatuh kembali ke Tanggal js. Ini tidak disarankan dan akan dihapus dalam rilis besar mendatang. Silakan merujuk ke https://github.com/moment/moment/issues/1407 untuk info lebih lanjut.
Sepertinya saya tidak bisa menyingkirkannya! Bagaimana saya bisa memperbaikinya?
javascript
date
momentjs
dariush
sumber
sumber
Jawaban:
Untuk menghilangkan peringatan, Anda harus:
Lulus versi ISO yang diformat dari string tanggal Anda:
moment('2014-04-23T09:54:51');
Lewati string yang Anda miliki sekarang, tetapi beri tahu Moment apa format string tersebut:
moment('Wed, 23 Apr 2014 09:54:51 +0000', 'ddd, DD MMM YYYY HH:mm:ss ZZ');
Konversikan string Anda ke objek Tanggal JavaScript dan kemudian kirimkan ke Moment:
moment(new Date('Wed, 23 Apr 2014 09:54:51 +0000'));
Opsi terakhir adalah built-in fallback yang didukung Moment untuk saat ini, dengan peringatan konsol yang sudah usang. Mereka mengatakan mereka tidak akan mendukung fallback ini di rilis mendatang. Mereka menjelaskan bahwa menggunakan
new Date('my date')
itu terlalu tidak terduga.sumber
moment((new Date('Thursday, November 12, 2015 11:59 PM').toISOSring());
ok? Atau apakah saya hanya menekan masalah yang siap untuk crash secara diam-diam dalam waktu dekat seperti ini?Invalid
hasil tanggal.Sebagai alternatif, Anda dapat menekan menampilkan peringatan penghentian dengan mengatur
moment.suppressDeprecationWarnings = true;
sumber
// @ts-ignore
(setidaknya untuk beberapa versi moment-timezone dan @ types / moment-timezone).Konstruksi tanggal di
moment
internal menggunakannew Date()
javascript. Thenew Date()
konstruksi mengakui string tanggal baik RFC2822 atau ISO format di semua browser. Saat membangun amoment
objek dengan tanggal tidak dalam format ini, peringatan penghentian dilemparkan.Meskipun peringatan penghentian dilemparkan, untuk beberapa format,
moment
objek akan berhasil dibangun di Chrome, tetapi tidak di Firefox atau Safari. Karena itu, memproses tanggal di Chrome dapat memberikan hasil seperti yang diharapkan (tidak setiap saat) dan melemparInvalid Date
lain.Mempertimbangkan,
02.02.2018
,Chrome -
moment("02.02.2018")._d
->Fri Feb 02 2018 00:00:00 GMT+0530 (India Standard Time)
Firefox -
moment("02.02.2018")._d
->Invalid Date
Safari -
moment("02.02.2018")._d
->Invalid Date
Jadi
moment.js
digunakan dengan risiko Anda sendiri jika format yang direkomendasikan / standar tidak digunakan.Untuk menekan peringatan penghentian ,
moment
konstruksi.Contoh:
moment("02.05.2018", "DD.MM.YYYY").format("DD MM YYYY");
Contoh:
moment("2018-02-01T18:30:00.000Z")
- Format ISOmoment("Thu, 01 Feb 2018 18:30:00 GMT")
- Format RFC2822 - Format dalam Githubmoment.suppressDeprecationWarnings = true;
Saya menyarankan untuk menimpa input fallback pada saat itu.
Karena (3) akan menekan semua peringatan, (4) hanya akan menekan mundurnya tanggal konstruksi. Menggunakan (4), Anda akan mendapatkan
Invalid Date
karena internalnew Date()
digunakan dan penghentian lainnya dapat dilihat di konsol, sehingga momen dapat ditingkatkan atau metode yang sudah usang dapat diganti dalam aplikasi.sumber
Jika tanggal Anda dikirimkan kepada Anda dari API sebagai
string
(seperti masalah saya), Anda dapat menggunakan filter untuk mengonversi string menjadi tanggal untuk saat ini. Ini akan menangani peringatan saat konstruksi.Tambahkan ke tampilan:
sumber
Seperti ditunjukkan dalam jawaban di atas. Menyediakan format tanggal harus bekerja.
Mengapa saya menerima pesan penghinaan dengan baris kode berikut. Saya pikir format String + seharusnya untuk memperbaiki masalah ini.
moment.tz('2015:08:20 14:33:20', 'YYYY:MM:DD HH:mm:ss', 'America/New_York')
. Juga, tolong jangan saya tidak memiliki kontrol atas format tanggal yang disediakan. Saya tahu saya bisa mengonversinya sendiri'YYYY-MM-DDTHH:mm:ss'
sehingga saat itu tidak menunjukkan pesan penghentian. Namun, menurut dokumentasi, garis kode harus berfungsi. Inilah pesan penghinaan yang saya lihat.sumber