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

日付と時刻の指定された文字列表現を、それと同等の DateTime に変換します。文字列表現の形式は、指定された形式と正確に一致する必要があります。このメソッドは、変換が成功したかどうかを示す値を返します。

DateTime.TryParseExact(DateValue, 
                       "dd/mm/yyyy", 
                       CultureInfo.InvariantCulture, 
                       DateTimeStyles.None, 
                       out outDatetime);
于 2013-05-27T07:08:48.637 に答える
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 に答える