5

入力が空白の場合、に変換されますがデフォルト値を持つ.NET関数は何ですか?DateTime

例えば。

DateTime dtTest = Convert.ToDateTime(getDateString());

getDateString()空の文字列を返す場合Convert.ToDateTime、例外がスローされます。

"9:00AM"空の文字列の代わりにデフォルト値を使用するにはどうすればよいですか? これはどこでTryParse使用できるものですか?

4

6 に答える 6

4

私は三項ステートメントと呼ばれるものを使用しました。ここで例を見ることができます:MSDN

    string myDate = getDateString();
    DateTime dtTest = Convert.ToDateTime(String.IsNullOrEmpty(myDate) ? "my default value" : myDate);

三項ステートメントは以下のとおりです。

String.IsNullOrEmpty(myDate) ? "my default value" : myDate

そしてそれは次のように読むことができます:

文字列がnullまたは空の場合は、「my default value」を使用します。それ以外の場合は、myDateを使用します。

于 2013-02-12T07:08:07.377 に答える
4

を使用し、解析が失敗した場合は、Minimum Date で時間を取得するようDateTime.TryParseに割り当てることができます。DateTime.MinValue.AddHours(9)(9:00AM)

string str = "";
DateTime temp;
DateTime dt = DateTime.TryParse(str, out temp) ? temp : DateTime.MinValue.AddHours(9);

上記のコードでは、dtオブジェクトが保持します{01/01/0001 9:00:00 AM}

于 2013-02-12T07:07:38.163 に答える
2

これを2つの部分に分ける必要があります。

  • 解析する文字列を決定します
  • その文字列を解析できない場合に、結果をどのようにするかを考えます

例えば:

string text = GetDateString(); // Name converted to follow .NET conventions
if (string.IsNullOrEmpty(text))
{
    text = "9:00AM"; // Or whatever
}

DateTime parsed;
if (!DateTime.TryParse(text, out parsed))
{
    parsed = // some default here
}

また、期待している形式と、それを解析するカルチャがわかっている場合は、TryParseExactの代わりに使用することを検討してください。TryParse

デフォルトの文字列値を使用する代わりに、デフォルトDateTime値を使用するだけで、テキストがnullの場合にわざわざ解析する​​必要はありません。

string text = GetDateString(); // Name converted to follow .NET conventions
DateTime parsed;

// This will only try to parse if text is non-null and non-empty
if (string.IsNullOrEmpty(text) || !DateTime.TryParse(text, out parsed))
{
    parsed = // some default here
}
于 2013-02-12T07:08:21.340 に答える
0

次のように、検証が失敗したときにデフォルト値を返すラッパー関数を記述します。

public DateTime Validate(string dateString)
{
        DateTime dt;
        if(DateTime.TryParse(dateString, out dt))
            return dt;
        else
            return DateTime.Now; //default value


}
于 2013-02-12T07:10:36.990 に答える
0
  DateTime ToDateTime(string sourceValue){
    DateTime result;
    if(DateTime.TryParse(sourceValue, out result)
    return result
    else{
    result=new DateTime(2013,1,1) //default value, whatever you want
return result
    }
    }
于 2013-02-12T07:11:29.213 に答える
0

次のようにしてください:

DateTime MyDate;
DateTime ParsedDate;

if (DateTime.TryParse(txtNotificationDate.Text.Trim(), out ParsedDate))
{
    MyDate= ParsedDate;
}
else
{
    MyDate = DateTime.Now;
}
于 2014-02-19T13:46:34.767 に答える