Dudo que sea el único que ha encontrado esta solución, pero si tiene una mejor, publíquela aquí. Simplemente quiero dejar esta pregunta aquí para que yo y otros podamos buscarla más tarde.
Necesitaba saber si se había ingresado una fecha válida en un cuadro de texto y este es el código que se me ocurrió. Disparo esto cuando el foco sale del cuadro de texto.
try
{
DateTime.Parse(startDateTextBox.Text);
}
catch
{
startDateTextBox.Text = DateTime.Today.ToShortDateString();
}
c#
datetime
validation
Mate
fuente
fuente
Parse
utilizaTryParse
referenceource.microsoft.com/#mscorlib/system/globalization/…Respuestas:
Creo que esto es más rápido y significa que no tienes que usar intentos / capturas feos :)
p.ej
fuente
if(DateTime.TryParse(startDateTextBox.Text, out var temp))
:)No use excepciones para el control de flujo. Utilice DateTime.TryParse y DateTime.TryParseExact . Personalmente prefiero TryParseExact con un formato específico, pero creo que hay ocasiones en las que TryParse es mejor. Ejemplo de uso basado en su código original:
Razones para preferir este enfoque:
fuente
Aquí hay otra variación de la solución que devuelve verdadero si la cadena se puede convertir a un
DateTime
tipo y falso en caso contrario.fuente
Usaría el método DateTime.TryParse (): http://msdn.microsoft.com/en-us/library/system.datetime.tryparse.aspx
fuente
¿Qué pasa con TryParse ?
fuente
Un problema con el uso
DateTime.TryParse
es que no admite el caso de uso de entrada de datos muy común de fechas ingresadas sin separadores, por ejemplo011508
.Aquí hay un ejemplo de cómo apoyar esto. (Esto es de un marco que estoy construyendo, por lo que su firma es un poco extraña, pero la lógica central debería ser utilizable):
fuente
// Supongamos que la cadena de entrada tiene un formato de fecha corto.
por ejemplo, "2013/7/5" devuelve verdadero o
"2013/2/31" devuelve falso.
http://forums.asp.net/t/1250332.aspx/1
// bool booleanValue = ValidateBirthday ("12:55"); devuelve falso
fuente
fuente
Todas las respuestas son bastante buenas, pero si desea utilizar una sola función, esto puede funcionar.
fuente
También puede definir el
DateTime
formato para unCultureInfo
fuente
fuente
string
que podría contener o no unDateTIme
valor. Está comprobando si un determinadoDateTime
tiene valores predeterminados (correspondientes a0001-01-01T00:00:00.0000000
). ¿Cómo responde esto a la pregunta?fuente
fuente