使用DateTime.TryParse()检查多种日期格式

我正在使用一种方法来validation文本框。

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; } 

我也想查看格式。 它需要mm/dd/yyyy ,但希望它是dd/mm/yyyy

尝试DateTime.TryParseExact

 DateTime dt; DateTime.TryParseExact(textBox.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt); 

如果要在问题中更新时检查多种格式,则可以使用另一种TryParseExact重载方法,该方法将format参数作为字符串数组。

 string[] formats = { "dd/MM/yyyy", "MM/dd/yyyy" }; DateTime.TryParseExact(txtBox.Text, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out value)); 

请注意格式字符串。 正如你所提到的格式为dd/mm/yyyy 。 这里mm表示minute而不是月份。 使用MM表示月份。

 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; } 

尝试使用TryParseExact

将指定的日期和时间字符串表示forms转换为其DateTime等效项。 字符串表示的格式必须与指定的格式完全匹配。 该方法返回一个值,指示转换是否成功。

 DateTime.TryParseExact(DateValue, "dd/mm/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out outDatetime); 

使用TryParseExact而不是更快。 例:

 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); } } }