2012-03-20 76 views
0

我知道這是一個反覆出現的問題,但即使經過大量研究,我似乎也無法使其發揮作用!我想將字符串轉換爲DateTime。無法將日期時間格式從MM/dd/yyyy轉換爲yyyy-MM-dd

public DateTime ConvertToDateTime(string thisDate) 
{ 
    return DateTime.ParseExact(thisDate, "yyyy-MM-dd", CultureInfo.InvariantCulture); 
} 

(編者)

我給"2012-03-07"作爲參數,我得到一個DateTime03/07/2012 12:00AM。當我想它返回:2012-03-07 00:00:00

+0

你是說你想讓月份和日子顛倒過來嗎?或者你希望它以特定的字符串格式輸出? – 2012-03-20 18:46:51

+4

不要混淆格式與數據。午夜是午夜。如果您希望格式與默認格式不同,請更改它。 '.ToString(「yyyy-dd-MM hh:mm:ss」)' – 2012-03-20 18:47:45

+0

@Paul,我的錯!我編輯了第一篇文章。 – 2012-03-20 18:49:01

回答

8

你的代碼是正確的;你的期望是錯誤的。

當一種方法返回DateTime,它沒有格式。嗯,更準確的說,它有一個與字符串格式無關的二進制內存中格式。

調試器格式化DateTime以顯示給您,但它對DateTime值本身沒有影響。它使用的格式大概取決於您的區域設置。

如果要將DateTime顯示給用戶,或者將其作爲字符串傳遞給某個其他函數,則可以使用ToString重載之一進行任意格式化。

可能是因爲您正在顯示或傳遞您給出的函數的返回值;如果是這樣,錯誤是在顯示或傳遞DateTime的代碼中,而不是在你給出的函數中。如果是這種情況,請編輯您的答案以包含該代碼,也許我們可以幫助您解決問題。

2

試試這個

public String ConvertToDateTime(string thisDate) 
{ 
    return DateTime.ParseExact(thisDate, "yyyy-MM-dd", 
      CultureInfo.InvariantCulture).toString("yyyy-MM-dd"); 
} 
+0

這是什麼意思? – 2012-03-20 18:48:54

+0

我想返回一個'DateTime'對象! – 2012-03-20 18:50:08

+0

DateTime沒有格式。無論何時你需要一個格式,你需要使用DateTime.toString(「yyyy-MM-dd」)將它轉換爲一個字符串。 – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 2012-03-20 18:55:13

相關問題