Estoy usando un método para validar cuadros de texto.
public bool ValidateDateTimeTextBoxes(params TextBox[] textBoxes) { DateTime value = DateTime.Today; //string dateFormat = "dd/mm/yyyy"; foreach (var textBox in textBoxes) { if (!DateTime.TryParse(textBox.Text, out value)) { return false; } } return true; }
Quiero comprobar el formato también. Requiere mm/dd/yyyy
, pero desea que sea dd/mm/yyyy
Pruebe DateTime.TryParseExact
DateTime dt; DateTime.TryParseExact(textBox.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt);
Si desea verificar varios formatos a medida que actualiza su pregunta, puede hacerlo utilizando otro método de sobrecarga de TryParseExact
que toma el parámetro de format
como una matriz de cadena.
string[] formats = { "dd/MM/yyyy", "MM/dd/yyyy" }; DateTime.TryParseExact(txtBox.Text, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out value));
Por favor, tenga cuidado de la cadena de formato. Como ha mencionado, formatee como dd/mm/yyyy
. Aquí mm
representa el minute
no el mes. Utilice MM
para la representación del mes.
DateTime.TryParseExact(textBox.Text, "dd/MM/yyyy", null, System.Globalization.DateTimeStyles.None, out outDt))
public bool ValidateDateTimeTextBoxes(params TextBox[] textBoxes) { DateTime value = DateTime.Now; //string dateFormat = "dd/mm/yyyy"; foreach (var textBox in textBoxes) { if (!DateTime.TryParse(textBox.Text,"dd/mm/yyyy",new CultureInfo("en-US"), DateTimeStyles.None out value)) { return false; } } return true; }
Trate de usar TryParseExact
Convierte la representación de cadena especificada de una fecha y hora en su equivalente de DateTime. El formato de la representación de cadena debe coincidir exactamente con un formato especificado. El método devuelve un valor que indica si la conversión se realizó correctamente.
DateTime.TryParseExact(DateValue, "dd/mm/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out outDatetime);
Utilice TryParseExact
en TryParseExact
lugar, que también es más rápido. Ejemplo:
using System; using System.Globalization; class Program { static void Main() { string dateString = "27/05/2012"; // <-- Valid string dtformat = "dd/mm/yyyy"; DateTime dateTime; if (DateTime.TryParseExact(dateString, dtformat, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime)) { Console.WriteLine(dateTime); } } }