2011-12-12 73 views
0

我有一個叫TheUserTime字符串,看起來像這樣:分割字符串數組在C#創建日期時間

string TheUserTime = "12.12.2011.16.22"; //16 is the hour in 24-hour format and 22 is the minutes 

我想整型的數組中分割字符串來從該日期時間(會發生什麼當它是0?)和組成日期對象。

這樣做的最好方法是什麼?

謝謝。

回答

5

您應該使用DateTime.ParseExactDateTime.TryParseExactcustom format string代替。

ParseExact

DateTime.ParseExact("12.12.2011.16.22", "dd.MM.yyyy.HH.mm", 
        CultureInfo.InvariantCulture) 

TryParseExact

DateTime dt; 
if(DateTime.TryParseExact("12.12.2011.16.22", "dd.MM.yyyy.HH.mm", 
          CultureInfo.InvariantCulture, DateTimeStyles.None, 
          out dt)) 
{ 
    // parse successful use dt 
} 

使用TryParseExact避免了可能的異常,如果解析失敗,雖然是dt變量將有DateTime默認值這種情況。

+0

好吧,感謝TryParseExact的想法,以防s#* t發生。 – frenchie

+0

我得到了「沒有重載方法TryParseExact需要4個參數;我需要改變什麼? – frenchie

+0

@frenchie - 你使用的是什麼版本的.NET?看看TryParseExact的鏈接,它詳細說明了正確的重載。錯誤了一個參數 – Oded

5

我不會推薦你的方法,而是使用ParseExact並指定預期的格式。

string theUserTime = "12.12.2011.16.22"; 
var date = DateTime.ParseExact(theUserTime, "MM.dd.yyyy.HH.mm", CultureInfo.CurrentCulture); 
+0

答案是好的,但我們的假設,該字符串theUserTime將被硬編碼,我會建議傳遞變量theUserTime =的String.Format(DateTime.now.ToString( 「MM.dd.yyyy.HH.mm」)); ParseExact更好,因爲如果它不能解析租約,你會知道爲什麼,關於格式.. – MethodMan

0

您可以使用:

DateTime.ParseExact("12.12.2011.16.22", "MM.dd.yyyy.HH.mm", System.Globalization.CultureInfo.InvariantCulture);