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