2015-06-15 14 views
6

Ho un campo stringa che viene utilizzato per ottenere valori diversi. Alcuni dei valori ricevuti sono date. Ora ho bisogno di controllare se il valore ricevuto è data o no? La data di ricezione può essere di nuovo in diversi formati.Come convalidare se una stringa è una data valida in js

Ho provato Date.parse(), funziona se il formato è dd-mm-yyyy hh:mm, ma ho alcune date ricevute in modo simile (26/05/2015 06:20:57 +00:00).

Come faccio a confrontare se la stringa è data valida o no?

+0

Prova a guardare moment.js (http://momentjs.com/docs/) è una libreria di date piuttosto forte. Potresti provare a creare una data con qualsiasi valore, quindi verificare se è valida –

+1

Questo può essere un duplicato, ma il duplicato collegato ha risposte per lo più scarse che si basano semplicemente su * Date.parse *, che è molto inaffidabile per formati casuali. – RobG

+2

È fondamentale analizzare correttamente una stringa di data in cui è possibile indicare al parser in che formato si trova (o fornire un formato che ** si conosce ** analizzerà correttamente). Altrimenti, puoi semplicemente provare una sequenza di formati diversi e fermarti quando ne ottieni uno che "funziona". Dove l'anno è il primo, puoi essere ragionevolmente sicuro della sequenza ymd, ma dove l'anno è l'ultimo, la prevalenza della sequenza m/d/y illogica significa che non puoi dire con certezza se 04/05/2010 è il 4 maggio o 5 aprile – RobG

risposta

8

Se Date.parse() non è abbastanza per voi - ma può essere sufficiente - si veda la documentazione a:

allora si può provare:

È una libreria che analizza, convalida, manipola e visualizza le date in JavaScript, che ha un'API molto più ricca rispetto alle funzioni di gestione della data JavaScript standard.

Vedere anche this answer per ulteriori librerie e collegamenti a esercitazioni.

+1

grazie. l'uso di moment.js aiuta. Posso analizzare la stringa per adattarla a qualsiasi formato che desidero. – user1147738

+1

utilizzando moment.js solo per la convalida di una stringa non sembra corretta. È disponibile una soluzione JavaScript pura? – Kira

Problemi correlati