Moment: isValid tidak berfungsi dengan benar

Dibuat pada 28 Okt 2019  ·  4Komentar  ·  Sumber: moment/moment

Jelaskan bugnya
isValid tidak berfungsi dengan benar

Untuk Mereproduksi
Langkah-langkah untuk mereproduksi perilaku:
moment('Chicago Illinois 46702').isValid(); // true

Perilaku yang diharapkan
harus salah

Komentar yang paling membantu

const allPossibleFormats = [
  'D MMMM YYYY',
  'D MMMM YYYY HH:mm',
  'DD-MM-YY',
  'DD-MM-YYYY',
  'DD.MM.YYYY',
  'DD.MM.YYYY HH:mm',
  'DD/MM/YY',
  'DD/MM/YYYY',
  'DD/MM/YYYY HH:mm:ss',
  'HH:mm:ss',
  'M/D/YYYY',
  'D/M/YYYY',
  'MM-DD-YY',
  'MM-DD-YYYY',
  'MM-DD-YYYY HH:mm:ss',
  'MM/DD/YY',
  'MM/DD/YYYY',
  'MM/DD/YYYY HH:mm:ss',
  'MMM D YYYY',
  'MMM D YYYY LT',
  'MMMM Do YYYY',
  'MMMM Do YYYY LT',
  'YYYY-DD-MM HH:mm:ss',
  'YYYY-MM',
  'YYYY-MM-DD',
  'YYYY-MM-DD HH:mm',
  'YYYY-MM-DD HH:mm:ss',
  'YYYY-MM-DD LT',
  'YYYY-MM-DD h:mm:ss A',
  'YYYY-MM-DDTHH:mm:ssZ',
  'ddd, MMM D YYYY LT',
  'dddd D MMMM YYYY HH:mm',
  'dddd, MMMM Do YYYY LT'
];

moment('Chicago Illinois 46702', allPossibleFormats, true).isValid(); // false
moment('18/01/1944', allPossibleFormats, true).isValid(); // true
moment('22-10-2020', allPossibleFormats, true).isValid(); // true
moment('1944-01-18 12:00:00', allPossibleFormats, true).isValid(); // true
moment('2001-01-01 00:00:00', allPossibleFormats, true).isValid(); // true
moment('2001-01', allPossibleFormats, true).isValid(); // true

Kami juga dapat memperluas array allPossibleFormats dan menambahkan format tanggal/datetime lainnya

Semua 4 komentar

Ini valid karena telah diubah menjadi tanggal yang valid:

new Date('Chicago Illinois 46702'); // Wed Jan 01 46702 00:00:00 GMT+0000 (Greenwich Mean Time)

Namun... Anda juga akan melihat peringatan dari saat:

moment('Chicago Illinois 46702').isValid(); 

Di konsol JavaScript Anda:

Peringatan penghentian: nilai yang diberikan tidak dalam format RFC2822 atau ISO yang dikenali. konstruksi momen jatuh kembali ke js Date(), yang tidak dapat diandalkan di semua browser dan versi. Format tanggal non RFC2822/ISO tidak disarankan dan akan dihapus dalam rilis utama yang akan datang. Silakan merujuk ke http://momentjs.com/guides/#/warnings/js -date/ untuk info lebih lanjut.

Bagaimana dengan ini?

moment('22-10-2020', 'dd-MM-yyyy', true).isValid();

mengembalikan palsu.

EDIT
Saya melihat: moment('22-10-2020', 'DD-MM-YYYY', true).isValid(); bekerja

const allPossibleFormats = [
  'D MMMM YYYY',
  'D MMMM YYYY HH:mm',
  'DD-MM-YY',
  'DD-MM-YYYY',
  'DD.MM.YYYY',
  'DD.MM.YYYY HH:mm',
  'DD/MM/YY',
  'DD/MM/YYYY',
  'DD/MM/YYYY HH:mm:ss',
  'HH:mm:ss',
  'M/D/YYYY',
  'D/M/YYYY',
  'MM-DD-YY',
  'MM-DD-YYYY',
  'MM-DD-YYYY HH:mm:ss',
  'MM/DD/YY',
  'MM/DD/YYYY',
  'MM/DD/YYYY HH:mm:ss',
  'MMM D YYYY',
  'MMM D YYYY LT',
  'MMMM Do YYYY',
  'MMMM Do YYYY LT',
  'YYYY-DD-MM HH:mm:ss',
  'YYYY-MM',
  'YYYY-MM-DD',
  'YYYY-MM-DD HH:mm',
  'YYYY-MM-DD HH:mm:ss',
  'YYYY-MM-DD LT',
  'YYYY-MM-DD h:mm:ss A',
  'YYYY-MM-DDTHH:mm:ssZ',
  'ddd, MMM D YYYY LT',
  'dddd D MMMM YYYY HH:mm',
  'dddd, MMMM Do YYYY LT'
];

moment('Chicago Illinois 46702', allPossibleFormats, true).isValid(); // false
moment('18/01/1944', allPossibleFormats, true).isValid(); // true
moment('22-10-2020', allPossibleFormats, true).isValid(); // true
moment('1944-01-18 12:00:00', allPossibleFormats, true).isValid(); // true
moment('2001-01-01 00:00:00', allPossibleFormats, true).isValid(); // true
moment('2001-01', allPossibleFormats, true).isValid(); // true

Kami juga dapat memperluas array allPossibleFormats dan menambahkan format tanggal/datetime lainnya

Silakan buka kembali jika Anda masih memiliki masalah.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat