2015-05-18 26 views
1

我試圖讓這個日期字符串2015年4月9日:15:16:17在這個格式2015年9月4日15:16:17顯示。這是我嘗試過的。DateTime.TryParse工作不正常

DateTime dtDateTime = new DateTime(); 

    string dateString = "09 Apr 2015: 15:16:17"; 
    DateTime dateValue; 
    DateTime.TryParse(dateString, out dateValue); 
    dtDateTime = dateValue; 

這是我認爲TryParse將在dateString值轉換爲所需的格式DateTime輸出01/01/0001 00:00:00

。我究竟做錯了什麼?

+5

'TryParse'根據它是否成功返回'true'或'false',我想你會發現它在這裏返回'false'。 –

+4

我認爲這年後的':'會把它扔掉。看看'DateTime.ParseExact' https://msdn.microsoft.com/en-us/library/w2sa9yss%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396) – DLeh

+3

你可能需要'TryParseExact'一個格式字符串將其更改爲日期。 'TryParse'我認爲只嘗試使用當前的文化格式。 –

回答

3

你應該去這樣:

DateTime dtDateTime = new DateTime(); 

string dateString = "09 Apr 2015: 15:16:17"; 
DateTime dateValue; 
if (DateTime.TryParseExact(dateString, @"dd MMM yyyy':' HH':'mm':'ss", 
     new CultureInfo("en-us"), DateTimeStyles.None, out dateValue)) 
    dtDateTime = dateValue; 

使用TryParseExact你可以提供一個自定義的日期格式字符串以匹配您輸入的日期。在上面的例子中,我在一年後增加了額外的:

此外,您必須使用可以瞭解您的月份名稱的CultureInfo;這裏我假設你有英文格式的日期。

+0

啊你打我吧,+1 – Pseudonym

+0

完美!謝謝,謝謝,謝謝:-) – NepSyn14

0

你需要指定的格式,因爲它不是一個標準的日期格式字符串:

DateTime.TryParseExact(
    dateString, 
    "dd MMM yyyy: HH:mm:ss", 
    CultureInfo.CurrentCulture, 
    DateTimeStyles.None, 
    out dateValue); 

此外,你應該檢查調用的結果,因爲TryParseTryParseExact回報true/false

+0

'CultureInfo.CurrentCulture'不會在任何情況下工作;對於英文名稱,您應該提供'CultureInfo.InvariantCulture'或一些與英文相關的CultureInfo –

0

你可以使用TryParseExact方法:

DateTime.TryParseExact(dateString, "dd MMM yyyy: HH:mm:ss", 
         System.Globalization.CultureInfo.InvariantCulture, 
         System.Globalization.DateTimeStyles.AllowWhiteSpaces, 
         out dtDateTime); 

溫馨提示:

  • 如果使用MMM,當月將被視爲如果它是3個字母的格式(如
  • 如果使用HH,而不是hh這意味着小時部分是24小時格式,它不會在解析小時15時失效