Se specifico YYYY-MM-17
come data per moment.js, si dice che è una data valida:moment.js sta facendo cose strane quando analizza una data mal formattato
var myMoment = moment('YYYY-MM-17', 'YYYY-MM-DD');
console.log(myMoment.isValid()); // -> true
console.log(myMoment.get('year')); // -> 2017
console.log(myMoment.get('month')); // -> 0
console.log(myMoment.get('day')); // -> 0
https://jsfiddle.net/seu6x3k3/3/
I' m vedendo anche risultati diversi su diversi browser. Secondo il docs:
... per prima cosa controlla se la stringa corrisponde ISO 8601 nota formati, per poi cadere di nuovo a
new Date(string)
se un formato noto non viene trovato.
Questo non è quello che sto vedendo. Quando nativamente specificare una data utilizzando lo stesso formato:
var date = new Date('YYYY-MM-17'); // -> NaN
console.log(date.getYear()); // -> NaN
console.log(date.getMonth()); // -> NaN
console.log(date.getDay()); // -> NaN
https://jsfiddle.net/3p5x1qn3/
Ho cercato di rispondere a questa, ma ho dovuto rinunciare quando ho scoperto che Moment tratta 'momento ('foo-bar-17'), come non valida, ma' momento ('foo- ' bar-1 ') 'fino a' momento (' foo-bar-12 ') 'come gennaio al 1 ° dicembre 2001. Non sono sicuro dei diversi risultati che stai vedendo, ma potrebbe essere correlato a [questa domanda I risposto qualche settimana fa] (http://stackoverflow.com/q/32007167/1317805). –
Grazie James. Abbiamo scoperto che esiste un'opzione "rigorosa" per l'analisi. Ha pubblicato la mia risposta qui sotto. – sennett