Berikut skenarionya:
Saya memiliki String
tanggal dan format tanggal yang berbeda. Mis .:
tanggal: tanggal: 10-19
2016Format: "DD-MM-YYYY".
Saya perlu memeriksa apakah tanggal ini adalah tanggal yang valid.
Saya telah mencoba mengikuti hal-hal
var d = moment("2016-10-19",dateFormat);
d.isValid()
selalu kembali false
. Apakah Moment.js tidak mengurai tanggal dalam format yang diberikan?
Kemudian saya mencoba memformat tanggal DD-MM-YYYY
terlebih dahulu dan kemudian meneruskannya ke Moment.js:
var d = moment("2016-10-19").format(dateFormat);
var date = moment(d, dateFormat);
Sekarang date.isValid()
memberi saya hasil yang diinginkan, tetapi di sini objek tanggal Moment.js dibuat dua kali. Bagaimana saya bisa menghindari ini? Apakah ada solusi yang lebih baik?
FYI saya tidak diizinkan untuk mengubah dateFormat
.
javascript
date
datetime
momentjs
Ganesh
sumber
sumber
Jawaban:
Mampu menemukan solusinya. Karena tanggal yang saya peroleh dalam format ISO, hanya memberikan tanggal ke saat akan memvalidasinya, tidak perlu meneruskan dateFormat.
Dan kemudian
date.isValid()
memberikan hasil yang diinginkan.sumber
var a = moment('12345'); a.isValid() // is true
Ini gagal karena momen akan kembali ke objek tanggal default jika tidak dapat mengurai tanggal. Dan objek tanggal default akan selalu mengembalikan tanggal (bukan yang Anda inginkan.)moment('02').isValid() === true
, jadi Anda mungkin ingin berhati-hati dengan itumoment('abcde 1').isValid() === true
var date = moment('2016-10-19', 'DD-MM-YYYY', true);
Anda harus menambahkan argumen ketiga saat meminta
moment
yang memberlakukan penguraian ketat. Berikut adalah bagian yang relevan dari dokumentasi momen http://momentjs.com/docs/#/parsing/string-format/ Ada di dekat akhir bagian.sumber
Ini dia: Working Fidddle
sumber
2016-10-19
?var d = moment("2016-10-19",dateFormat);
?Saya menggunakan momen bersama dengan Tanggal baru untuk menangani kasus
undefined
nilai data:const date = moment(new Date("2016-10-19"));
karena:
moment(undefined).isValid() == true
dimana cara yang lebih baik:
moment(new Date(undefined)).isValid() == false
sumber
Saya baru saja menemukan kasus yang benar-benar kacau.
sumber
moment('Decimal128', 'YYYY-MM-DD', true).isValid() // false
. Gunakan mode ketat :) momentjs.com/guides/#/parsing/strict-modeCara memeriksa apakah suatu string adalah tanggal yang valid menggunakan Momen, ketika format tanggal dan tanggal berbeda
Maaf, tetapi apakah salah satu solusi yang diberikan di utas ini benar-benar menjawab pertanyaan yang diajukan?
Berikut ini bekerja untuk saya ...
Tapi jujur, tidak mengerti mengapa
moment.isDate()
( seperti yang didokumentasikan ) hanya menerima suatu objek. Harus juga mendukung string menurut saya.sumber
sumber
Jika tanggalnya valid maka
getTime()
akan selalu sama dengan dirinya sendiri.sumber
Coba yang ini. Ini tidak bagus tetapi akan berfungsi selama input dalam format konstan dari pemilih tanggal Anda.
Ini adalah badDate yang berasal dari alat pilih Anda dalam contoh ini
https://jsfiddle.net/xs8tvox9/
sumber