La convalida di una data ISO 8601 utilizzando moment.js

Sto cercando di validare una data ISO 8601 in javascript utilizzando moment.js

console.log(moment("2011-10-10T14:48:00", "YYYY-MM-DD", true).isValid())

Restituisce false. Dove sto andando di male ? È la data in formato di tipo non corretto ?

versione: Momento 2.5.1

 

4 Replies
  1. 11

    Non so perché Praveen l’esempio di opere in jsfiddle, ma il motivo per cui il tuo esempio non funziona è perché non è un formato YYYY-MM-DD. Include il tempo, ed è quindi considerato non valido. Se si tenta, senza il tempo, la data, il metodo restituisce true.

    Invece, provare questo:

    moment("2011-10-10T14:48:00", "YYYY-MM-DDTHH:mm:ss", true).isValid()

  2. 39

    Per evitare che utilizza il modello di stringa come secondo argomento, si può chiamare:

    moment("2011-10-10T14:48:00", moment.ISO_8601).isValid() //true
    moment("2016-10-13T08:35:47.510Z", moment.ISO_8601).isValid() //true
    • puoi provare moment("1466113", moment.ISO_8601, true).isValid() vedere che evitando modello di stringa non funziona ovunque
  3. 4

    Va bene, l’ho trovato.

    Come per il documentazione,

    Versione 2.3.0, è possibile specificare un boolean per l’ultimo argomento
    per rendere il Momento uso rigoroso di analisi. Rigorosa analisi richiede che il
    il formato di input e di corrispondere esattamente

    perché rigorosa operazione, restituisce false. Per superare che utilizzo qui di seguito il codice:

    alert(moment("2011-10-10T14:48:00", "YYYY-MM-DDTHH:mm:ss", true).isValid())
    //This will return true

    demo1

    Se si rimuovere il strict parsing,

    alert(moment("2011-10-10T14:48:00", "YYYY-MM-DD").isValid())
    //This will return true

    demo2

    • questo restituisce true, mi aspetto che sia falso allarme(momento(“6205122”, “YYYY-MM-DDTHH:mm:ss, vero”).isValid())
    • C’è un errore di battitura nel primo jsfiddle: alert(momento(“2011-10-10T14:48:00”, “YYYY-MM-DDTHH:mm:ss, vero”).isValid()) La doppia citazione deve essere spostato prima della virgola, prima del vero.
  4. 1

    utilizzare questo a parte corrispondono alla vostra data di

    console.log(moment("2011-10-10T14:48:00", "YYYY-MM-DD", false).isValid())

    se vuoi formato esatto match, poi

    console.log(moment("2011-10-10T14:48:00", "YYYY-MM-DDTHH:mm:ss", true).isValid())

Lascia un commento