Comment vérifier ou valider la date de saisie de la zone de texte au format DD/MM/YYYY
?Comment vérifier ou valider la date de saisie de la zone de texte au format JJ/MM/AAAA?
Répondre
Markup:
<asp:Textbox runat="server" ID="TextBox1" />
<asp:CustomValidator runat="server" ControlToValidate="TextBox1" ErrorMessage="Date was in incorrect format" OnServerValidate="CustomValidator1_ServerValidate" />
code-behind:
protected void CustomValidator1_ServerValidate(object sender, ServerValidateEventArgs e)
{
DateTime d;
e.IsValid = DateTime.TryParseExact(e.Value, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out d);
}
si vous souhaitez autoriser plusieurs formats et ne les, utilisez suivant:
DateTime.TryParseExact(e.Value, new[] { "dd/MM/yyyy", "yyyy-MM-dd" }, CultureInfo.InvarinatCulture, DateTimeStyles.None, out d);
Vous ne pouvez pas. User une sorte de sélecteur de datetime à la place. Exemple here.
-1 pourquoi exactement? – fearofawhackplanet
Probablement parce que * peut * être validé. (pas moi downvoting btw) –
Non, il ne peut pas. Sauf si vous avez un ordinateur magique qui peut lire les esprits des gens. 01/12/2010 = jj/mm/aaaa ou mm/jj/aaaa? – fearofawhackplanet
Vous pouvez utiliser un CustomValidator pour vérifier que la valeur entrée est comprise dans les paramètres définis.
I.e. 13/12/2001 est valide mais 12/12/2001 est invalide.
Vous pouvez utiliser un validateur personnalisé pour vérifier à peu près n'importe quoi dans la zone de texte, mais il peut être plus facile d'utiliser CompareValidator pour vérifier si le texte peut être converti en une date.
Je trouve un exemple (en VB, mais assez facile à lire et à traduire en C#) ici: http://quickstarts.asp.net/QuickStartv20/aspnet/doc/validation/default.aspx
Cependant, en utilisant certains pourraient être plus faciles à utiliser sorte de contrôle de sélecteur de date.
Il vaudra mieux utiliser un contrôle de calendrier, mais si vous voulez malgré tout vérifier la chaîne de date, utilisez le code suivant pour confirmer que le format est au format JJ/MM/AAAA.
DateTime dt;
if (!DateTime.TryParse(texbox.Text, new System.Globalization.CultureInfo("en-GB"), System.Globalization.DateTimeStyles.None, dt))
{
// text is not in the correct format
}
Pourquoi exactement "en-GB"? – abatishchev
fr-FR = paramètres de la culture anglaise britannique. Il utilise le format JJ/MM/AAAA –
semble plus facile de spécifier le format de chaîne, en-GB peut autoriser d'autres variations aussi bien. – apoorv020
Une autre option utilise un validateur d'expressions régulières. L'expression régulière ci-dessous vérifie DD/MM/YYYY mais bien sûr il n'y a aucun moyen de distinguer si quelque chose comme 01 est DD ou MM. Sinon, ça fait l'affaire.
<asp:TextBox ID="txtDate" runat="server"/>
<asp:RegularExpressionValidator ID="regexpName" runat="server"
ErrorMessage="This expression does not validate."
ControlToValidate="txtDate"
ValidationExpression="^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$" />
Mon approche serait d'utiliser un regexvalidator pour un premier test rapide ("fait on dirait que ça pourrait être une date ") côté client. Et puis un CustomValidator avec un événement côté serveur qui essaie d'exécuter un DateTime.Parse avec mon format, pour exclure des dates comme "29 février 2010".
Personnellement, je ne fais pas confiance à CompareValidator ici, parce que je ne sais pas avec certitude quel format il utilise (mais cela peut être parce que je n'ai pas enquêté assez).
DateTime Result;
DateTimeFormatInfo info = new DateTimeFormatInfo ();
CultureInfo culture;
culture = CultureInfo.CreateSpecificCulture ("en-US");
info.ShortDatePattern = "dd/MM/yyyy";
if (DateTime.TryParse (StrDate, info, DateTimeStyles.None, out Result))
{
return StrDate;
}
Les réponses au code uniquement sont déconseillées ici. Veuillez ajouter une description de la raison pour laquelle votre solution répond à la question. –
- 1. Comment convertir la date dans la zone de texte au format MySQL DATETIME
- 2. Saisie automatique de la zone de texte
- 3. comment valider uniquement zone de texte utilisateur
- 4. Date dans le format de changement de zone de texte
- 5. Vérifiez Valider texte dans la zone de texte + Windows Forms
- 6. valider 3 champs de texte représentant la date de naissance
- 7. Comment enregistrer la date dans Excel au format de date
- 8. Format de la date Jquery
- 9. Comment valider la chaîne de format
- 10. Saisie de la date et de l'heure
- 11. Zone de texte Masque de date
- 12. valider une valeur de zone de texte pour la date actuelle dans asp.net
- 13. Quelle est l'expression sur RegularExpressionValidator pour vérifier si le texte de la zone de texte contient 6 caractères ou plus?
- 14. Valider la date
- 15. Sélection du texte de la zone de saisie précise
- 16. Comment laisser au navigateur de se souvenir de l'entrée de la zone de texte
- 17. Comment puis-je valider l'entrée de date au format jj-aaaa dans asp.net regularExpressionValidator?
- 18. Vérification du format de la date
- 19. Vérifier le format de la date avant l'analyse
- 20. preg PHP correspondent à valider la saisie de texte utilisateur
- 21. valider la zone de texte à l'aide de tinyMCE - jquery
- 22. Valider la date de naissance et vérifier l'âge
- 23. comment cocher "La date saisie est antérieure"
- 24. Comment valider deux zone de texte en même temps?
- 25. masque de saisie de zone de texte VBA
- 26. Comment changer la date au format de Mysql dans Jsp?
- 27. Validation de la zone de texte
- 28. JavaScript - Valider la date
- 29. Ajouter un élément au-dessus de la zone de texte sans modifier la position de la zone de texte
- 30. Valeurs de zone de texte MS Access 2007 valider
Veuillez ne pas utiliser le format JJ/MM/AAAA. Il existe une norme internationale, AAAA-MM-JJ (ISO8601) –
Mieux encore, utilisez un contrôle de calendrier plutôt qu'une zone de texte. –
@Pavel: Essayez de le dire au grand public, qui a l'habitude d'écrire des dates dans leur format local – MPritchard