1

次の関数を使用して、入力文字列が有効な日付であるかどうかを判断しています。

public static bool IsDate(string date)
        {
            DateTime Temp;

            if (DateTime.TryParse(date, out Temp))
                return true;
            else
                return false;
        }

問題は、「1997-09」と入力するとtrueが返されることです。「1997-08-12」のように完了日を確認してほしい

また、日付の修正形式はありません。入力は「2012年2月19日」の場合もあります

4

8 に答える 8

3

いいえ、固定の日付形式はありません。入力は「19-Feb-2012」の場合もあります

あるに違いない、そうでなければナンセンスだ。システムがどのように動作する必要があるかを定義していない場合は、コーディングをやめて、少し時間を取って定義することをお勧めします。

処理したい 1 つまたは複数の形式を指定できるTryParseExactメソッドを使用できます。

于 2012-04-19T11:52:53.783 に答える
2

正しい日付形式のリストを作成してDateTime.TryParseExactから、次のように確認する必要があります。

string format = "yyyy-MM-dd";
DateTime dateTime;
if (DateTime.TryParseExact(dateString, format, CultureInfo.InvariantCulture,
    DateTimeStyles.None, out dateTime))
于 2012-04-19T11:55:34.857 に答える
2

追加できる1つの簡単な条件:

    public static bool IsDate(string date)
    {
        DateTime Temp;
        return(DateTime.TryParse(date, out Temp)&&date.Length>=10)
    }
于 2012-04-19T11:55:34.843 に答える
1

DateTime.TryParse を使用します。フォーマットを指定できます。詳細はこちらをご覧ください。 http://msdn.microsoft.com/en-us/library/9h21f14e.aspx

于 2012-04-19T11:52:21.147 に答える
0

解析の結果を直接返すことができます:

public static bool IsDate(string value)
{
    DateTime date;
    return DateTime.TryParse(value, out date);
}

また、提供した形式で動作します (少なくとも現在のカルチャが「en-US」の場合)。

于 2012-04-19T11:50:54.103 に答える
0

これを解決するには、アプリケーションで を定義する必要がありdatetime-formatます。

どの Web ページにアクセスしても、コンパイル フォームが表示されている場合は、おそらく日付フィールドも表示され、その近くに次のようなものがあります。

DD-MM-YYYY、またはMM/DD/YY、またはその他の何か。

アプリケーションのフォーマットを定義し、それをユーザーに対して明確にしフォーマットに従って正確性をチェックします。

単なる仮定の例:

ユーザーが日付を挿入し、それを のような文字列に保存するとしますDD-MM-YYYY

if(dateTimeUserString.Split('-').Length < 3)
    //not valid string !

繰り返しますが、これはアプリケーションにより適切な方法を選択する必要がある単なる例です。

于 2012-04-19T11:51:34.553 に答える
0

DateTime.TryParseには、IFormatProvider を使用してカスタム形式を指定できるオーバーロードがあります。有効であると予想されるさまざまな文字列を確認するには、複数の IFormatPrivider を定義する必要がある場合があります。

また、if/else ではなく、コードを少し短くすることもできます。

return DateTime.TryParse(date, out Temp);
于 2012-04-19T11:53:34.510 に答える
0

あなたのコードは問題なく実行され、指定された日付文字列が有効な日付であるかどうかチェック19-Feb-2012します。1997-0919 february

これにより、日付入力が柔軟になります。

ただし、柔軟性が求められていない場合は、 を使用して 1 つまたは複数の特定の形式を解析してみてくださいTryParseExact

于 2012-04-19T12:17:26.517 に答える