Come convalidare una data? Intendo non il formato, ma la logica. Ad esempio: 30 febbraio non è una data valida.La data Javascript consente dati non validi (ad esempio il 30 febbraio)
var date = new Date("2015-02-29T13:02:49.073Z"); // 2015 Feb 29th does not exist
console.log(date.toISOString());
Returns 2015-03-01T13: 02: 49.073Z (1 ° marzo).
Ma voglio un'informazione che questa data (input) non è valida.
Modifica: Testato in Chrome. Firefox restituisce "data non valida". Ma non per l'analisi. Solo quando viene utilizzata la data (ad esempio toISOString()) viene generata un'eccezione.
try
{
var date = new Date("2015-02-29T13:02:49.073Z");
console.log(date.toISOString());
}
catch(e)
{
console.log("error: " + e.message);
}
Firefox:
data non valida
Chrome: (. Niente, appena passato alla data successiva)
Riepilogo: dipende dal browser. Quindi, non è raccomandato l'uso.
arresto: Vedo ora che questo dipende dal browser. Firefox restituisce una data non valida e Chrome ignora e conta fino al giorno successivo. Ok ma questo è terribile. Devo scrivere una propria funzione per convalidare una stringa di data. (?) – Dominik
_Non si consiglia di utilizzare Date.parse fino a ** ES5 **, l'analisi delle stringhe dipende interamente dall'implementazione. Ci sono ancora molte differenze nel modo in cui gli host eseguono le stringhe di data di parsing, quindi le stringhe di date dovrebbero essere analizzate manualmente (una libreria può aiutare se molti formati diversi devono essere adattati) ._ ([ref.] (Https: //developer.mozilla. org/it-it/Documenti/Web/JavaScript/Riferimento/Global_Objects/Data/analisi)) – hindmost
C'è una domanda qui? La logica alla base del modo in cui il costruttore Date gestisce i vari argomenti è completamente documentata in [* ECMA-262 *] (http://ecma-international.org/ecma-262/6.0/index.html#sec-date-year- mese-giorno-ore-minuti-secondi-MS). Come convalidare una data (cioè i valori) è stata trattata in [* molte domande qui *] (http://stackoverflow.com/search?q=%5Bjavascript%5D+validate+a+date). – RobG