2013-02-12 54 views
4

什么.NET功能将转换为DateTime,但有一个默认值,如果输入的是空白?如果输入为空,如何转换为DateTime但具有默认值?

例如。

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

如果getDateString()返回一个空字符串Convert.ToDateTime抛出异常。

我该如何使用默认值"9:00AM"而不是空字符串?这是TryParse可以使用的东西吗?

+0

上午9点在哪一天? – 2013-02-12 07:05:33

+0

确实,你可以使用'TryParse',但我不确定'9:00 AM'是否真的是'DateTime',或者你的意思是当时的日期。 – V4Vendetta 2013-02-12 07:05:52

回答

3

使用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}

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。

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 
} 
0

只写返回默认值时的包装功能验证如下失败,

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


} 
+0

您无法设置DateTime dt = null – 2013-02-12 07:14:22

+0

@TaronPro:谢谢 – 2013-02-12 07:15:28

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 
    } 
    } 
0

就这样做:

DateTime MyDate; 
DateTime ParsedDate; 

if (DateTime.TryParse(txtNotificationDate.Text.Trim(), out ParsedDate)) 
{ 
    MyDate= ParsedDate; 
} 
else 
{ 
    MyDate = DateTime.Now; 
} 
相关问题