Comment vérifier si une chaîne est un “dd/mm/yyyy” date?
Donné une chaîne str
, comment pourrais-je vérifier si il est dans le dd/mm/yyyy
format et contient une date légale ?
Quelques exemples:
bla bla //false
14/09/2011 // true
09/14/2011 //false
14/9/2011 //false
1/09/2011 //false
14/09/11 //false
14.09.2011 //false
14/00/2011 //false
29/02/2011 //false
14/09/9999 // true
OriginalL'auteur Misha Moroshko | 2011-09-28
Vous devez vous connecter pour publier un commentaire.
Edit: solution exacte ci-dessous
Vous pourriez faire quelque chose comme ça, mais avec une plus précise de l'algorithme pour le jour de validation:
http://jsfiddle.net/aMWtj/
Date de validation alg.: http://www.eee.hiflyers.co.uk/ProgPrac/DateValidation-algorithm.pdf
Solution exacte: une fonction qui retourne un analysée date ou null, selon exactement à vos exigences.
http://jsfiddle.net/aMWtj/2/
Dans le cas où vous avez besoin de la fonction retourne true/false et pour une aaaa/mm/jj
parseInt
. I. e.,d=+t[1]
. Permet d'éviter les problèmes comme l'endroit où vous avez oublié d'inclure le radix le jour de calcul (particulièrement problématique quand on sait que le jour peut avoir des zéros).hmm.. bon point 🙂
OriginalL'auteur Adam Jurczyk
Essayez -
Il n'y a plus d'infos à cette question - Analyser DateTime chaîne de caractères en JavaScript (le code dans ma réponse est fortement influencée par des liées question)
Démo - http://jsfiddle.net/xW2p8/
MODIFIER
Mise à jour de la réponse, essayez -
Cette fonction passe tous les cas de test. Pour autant que je suis au courant, Adam Jurczyk avait posté une réponse précise bien avant j'ai corrigé mon original de mauvaise réponse. Il le mérite pour cela.
Démo - http://jsfiddle.net/2r6eX/1/
C'est laid en ce qu'il manuellement divise une chaîne de date (basé sur la culture des hypothèses spécifiques); ne pas oublier qu'il nécessite la gestion des exceptions.
la question stipule que la date sera dans 'jj/mm/aaaa format. J'ai donc pensé qu'il était sûr de faire cette hypothèse.
Oups, Il semble que j'ai mal reconnu la langue, désolé. Pour le JS, c'est une solution adéquate! Est-vote.
lol, comment il est, que ces mauvais réponse (il ne parvient pas à moins de la moitié des cas de test), a plus upvotes?
OriginalL'auteur ipr101
vous pouvez utiliser les exp pour valider la date .
essayez comme ceci :
remarque: cela ne fonctionne que pour jj/mm/aaaa
pour une correspondance exacte de votre exigence utilisation
j'ai juste donné un exemple,afin que de cette façon, il peut approcher pas la solution exacte
pouvez personnaliser les regex en fonction de votre besoin.
OriginalL'auteur Pranav
Je vais répondre à une autre question, que Micha Moroshko a déjà été répondu: utiliser HTML5. C'est, sur l'hypothèse que les chaînes en question se posent comme des entrées de l'utilisateur par le biais d'un navigateur Web, je propose que les entrées de la recevoir comme
Je reconnais que tous les navigateurs en cours d'utilisation interprétera "date" d'une façon qui applique rigoureusement la validité. C'est la bonne chose à faire, cependant, va certainement améliorer à mesure que le temps passe, et qui risque d'être assez bon dans un contexte particulier même maintenant, simplement éliminer la nécessité de valider la date de chaîne après le fait.
OriginalL'auteur Cameron Laird
Personnellement, je pense que la meilleure solution serait de modifier l'INTERFACE utilisateur à utiliser des listes déroulantes pour le mois et, éventuellement, sélections de jour.
À essayer de comprendre si 1/2/2001 est le 2 janvier ou le 1er février, basée uniquement sur la chaîne d'entrée est impossible.
OriginalL'auteur NotMe
Découverte récente: Vous pouvez utiliser date.js lib, il ajoute la fonction Date.parseExact de sorte que vous pouvez juste faire
Date.parseExact(dateString,"dd/MM/yyyy")
. Il échoue lorsque le mois est00
, mais c'est toujours utile.OriginalL'auteur Adam Jurczyk
OriginalL'auteur