2014-01-15 26 views
4

我有一種情況,我以下列格式接收日期爲字符串。字符串到日期 - 在C#中[t「Mon Jan 13 2014 00:00:00 GMT + 0000(GMT標準時間)」]

「星期一2014年1月13日00:00:00 GMT + 0000(GMT標準時間)」

我需要將其轉換爲在C#中(無論是日期/串)以下格式進行進一步的處理

YYYY-MM-DD (2014-01-13)

Convert.ToDateTime(SelectedData)  

以上代碼thorws以下錯誤:

'Convert.ToDateTime(SelectedData)' threw an exception 
     of type 'System.FormatException' System.DateTime {System.FormatException} 

有什麼建議嗎?

我不能改變我收到日期的格式 最好的問候。

+0

你會總是收到完全相同的格式? – Plue

回答

9

你會需要使用DateTime.ParseExact

var date = DateTime.ParseExact(
    "Mon Jan 13 2014 00:00:00 GMT+0000 (GMT Standard Time)", 
    "ddd MMM dd yyyy HH:mm:ss 'GMT'K '(GMT Standard Time)'", 
    CultureInfo.InvariantCulture); 

解析日期之後你就可以發送它自己的路:

date.ToString("yyyy-MM-dd"); 

下面是一個Ideone來證明這一點。

+1

這工作:var date = DateTime.ParseExact(s, 「ddd MMM dd yyyy HH:mm:ss'GMT'K'(GMT Standard Time)'」, System.Globalization.CultureInfo.InvariantCulture); // Tx人爲此快速幫助 – user2739418

+0

@ user2739418,我已經使用您修改後的格式編輯了我的答案。我很高興我們能夠提供幫助! –

1
string date = SelectedData.Substring(4, 11); 
string s = DateTime.ParseExact(date, "MMM dd yyyy", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd"); 
+0

這對我來說排除了所有上述情況。謝謝@Plue: - * –

4

Convert.ToDateTime使用非標準的日期和時間格式,這是不是一個standart DateTime format

如果您的GMT+0000 (GMT Standard Time)在您的字符串中出現問題,您可以使用DateTime.ParseExact來代替;

string s = "Mon Jan 13 2014 00:00:00 GMT+0000 (GMT Standard Time)"; 
var date = DateTime.ParseExact(s, 
      "ddd MMM dd yyyy HH:mm:ss 'GMT+0000 (GMT Standard Time)'", 
      CultureInfo.InvariantCulture); 
Console.WriteLine(date.ToString("yyyy-MM-dd")); 

輸出將;

2014-01-13 

這裏一個demonstration

欲瞭解更多信息,採取在廁所:

相關問題