2013-02-12 77 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; 
} 
相關問題