Je doute que je sois le seul à avoir proposé cette solution, mais si vous en avez une meilleure, veuillez la poster ici. Je veux simplement laisser cette question ici pour que d'autres puissent la rechercher plus tard.
J'avais besoin de dire si une date valide avait été entrée dans une zone de texte et c'est le code que j'ai trouvé. Je tire ceci lorsque le focus quitte la zone de texte.
try
{
DateTime.Parse(startDateTextBox.Text);
}
catch
{
startDateTextBox.Text = DateTime.Today.ToShortDateString();
}
Parse
utilise mêmeTryParse
referencesource.microsoft.com/#mscorlib/system/globalization/…Réponses:
Je crois que c'est plus rapide et cela signifie que vous n'avez pas à utiliser de vilains essais / captures :)
par exemple
la source
if(DateTime.TryParse(startDateTextBox.Text, out var temp))
:)N'utilisez pas d'exceptions pour le contrôle de flux. Utilisez DateTime.TryParse et DateTime.TryParseExact . Personnellement, je préfère TryParseExact avec un format spécifique, mais je suppose qu'il y a des moments où TryParse est meilleur. Exemple d'utilisation basé sur votre code d'origine:
Raisons de préférer cette approche:
la source
Voici une autre variante de la solution qui renvoie true si la chaîne peut être convertie en
DateTime
type et false dans le cas contraire.la source
J'utiliserais la méthode DateTime.TryParse (): http://msdn.microsoft.com/en-us/library/system.datetime.tryparse.aspx
la source
Qu'en est-il de TryParse ?
la source
Un problème avec l'utilisation
DateTime.TryParse
est qu'il ne prend pas en charge le cas d'utilisation très courant de saisie de données de dates saisies sans séparateurs, par exemple011508
.Voici un exemple de la façon de soutenir cela. (Ceci provient d'un framework que je construis, donc sa signature est un peu bizarre, mais la logique de base devrait être utilisable):
la source
// suppose que la chaîne d'entrée est au format de date court.
Par exemple, "2013/7/5" renvoie vrai ou
"2013/2/31" renvoie faux.
http://forums.asp.net/t/1250332.aspx/1
// bool booleanValue = ValidateBirthday ("12:55"); renvoie faux
la source
la source
Toutes les réponses sont assez bonnes, mais si vous souhaitez utiliser une seule fonction, cela peut fonctionner.
la source
Vous pouvez également définir le
DateTime
format d'unCultureInfo
la source
la source
string
qui pourrait ou non contenir uneDateTIme
valeur. Vous vérifiez si une donnéeDateTime
a des valeurs par défaut (correspondant à0001-01-01T00:00:00.0000000
). Comment cela répond-il à la question?la source
la source