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

时间:2013-05-27 07:01:54

标签: c#

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

    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

5 个答案:

答案 0 :(得分:17)

尝试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作为月份表示。

答案 1 :(得分:2)

DateTime.TryParseExact(textBox.Text, "dd/MM/yyyy", null, System.Globalization.DateTimeStyles.None, out outDt))

答案 2 :(得分:1)

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

答案 3 :(得分:1)

尝试使用TryParseExact

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

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

答案 4 :(得分:1)

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