5

如果输入为空白,什么.NET函数将转换为 aDateTime但具有默认值?

例如。

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

如果getDateString()返回空字符串Convert.ToDateTime会引发异常。

我怎样才能使用默认值"9:00AM"而不是空字符串?这是TryParse可以使用的东西吗?

4

6 回答 6

4

使用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 回答
4

我使用了一种叫做三元语句的东西。您可以在此处查看示例:MSDN

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

三元语句如下:

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

它可以读作如下:

如果字符串为 null 或为空,则使用“我的默认值”,否则使用 myDate。

于 2013-02-12T07:08:07.377 回答
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值并且如果文本为空则无需解析:

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

这样做:

DateTime MyDate;
DateTime ParsedDate;

if (DateTime.TryParse(txtNotificationDate.Text.Trim(), out ParsedDate))
{
    MyDate= ParsedDate;
}
else
{
    MyDate = DateTime.Now;
}
于 2014-02-19T13:46:34.767 回答
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 回答