2014-12-29 188 views
0

我需要的數據類型是DataTime? 樣品字符串值我都像11/28/2014 1:40:42 AM 我應該使用什麼格式,將它們轉換爲DateTime? 我發現DateTime.ParseExact方法,但仍然不知道什麼基礎上的形狀的格式輸入我有的輸入。將字符串轉換爲DateTime?

+0

要使用精確的分析,請參閱MSDN格式化提示:http://msdn.microsoft.com/en-us/library/8kb3ddd4%28v=vs.110%29.aspx – VoteCoffee

+0

HTTP:// msdn.microsoft.com/en-us/library/w2sa9yss%28v=vs.110%29.aspx – VoteCoffee

+0

http://msdn.microsoft.com/en-us/library/az4se3k1%28v=vs.110%29。 aspx – VoteCoffee

回答

1

可以使用固定區域性解析這個格式:

DateTime? result = DateTime.Parse("11/28/2014 1:40:42 AM", CultureInfo.InvariantCulture); 

的類型result變量的將是DateTime?(這是一樣的Nullable<DateTime>)。請確保您確實需要可以爲空的類型,因爲DateTime.Parse的結果將始終爲DateTime值,從不會有null

如果你想趕上情況下解析失敗,你可以去這樣的:

DateTime result; 
if (!DateTime.TryParse("11/28/2014 1:40:42 AM", 
         CultureInfo.InvariantCulture, 
         DateTimeStyles.None, 
         out result)) 
{ 
    // Handle error 
} 
+2

爲什麼你聲明爲'var'然後投射?爲什麼不只是聲明爲'DateTime?'? – learningcs

+1

「var」表示編譯器使用任何類型的賦值右側。因爲OP要求它,所以我鑄造了Nullable (DateTime?)。查看更新的答案。 – Frank

+0

謝謝,是否還有一種方法可以捕獲不良格式以提高安全性?例如,我是否需要檢查結果爲空或我是否需要將其封裝在try-catch中?是的,架構是可空的DateTime – Bohn

-1

DateTime.Parse(string),它使用默認的格式提供。一般來說,由於文化轉換器改變格式(和他們改變DateTime很多)的方式,你想要默認。

+0

OP要求解析特定格式:11/28/2014 1:40:42 AM – Frank

0

您可以使用下面的代碼。

try 
{ 
    DateTime Value = DateTime.Parse("11/28/2014 1:40:42 AM", CultureInfo.InvariantCulture); 
} 
catch(Exception e) 
{ 
    //throw exception 
}