8

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

    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

4

5 回答 5

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月份表示。

于 2013-05-27T07:05:02.060 回答
2
DateTime.TryParseExact(textBox.Text, "dd/MM/yyyy", null, System.Globalization.DateTimeStyles.None, out outDt))
于 2013-05-27T07:06:31.817 回答
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);
        }
    }
}
于 2013-05-27T07:10:05.610 回答
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;
    }
于 2013-05-27T07:06:38.283 回答
1

尝试使用TryParseExact

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

DateTime.TryParseExact(DateValue, 
                       "dd/mm/yyyy", 
                       CultureInfo.InvariantCulture, 
                       DateTimeStyles.None, 
                       out outDatetime);
于 2013-05-27T07:08:48.637 回答