到目前为止的字符串 - 在C#[“Mon Jan 13 2014 00:00:00 GMT + 0000(GMT标准时间)”]

时间:2014-01-15 13:35:18

标签: c# datetime date-format

我的情况是我以下列格式收到日期作为字符串。

“2014年1月13日星期一00:00:00 GMT + 0000(GMT标准时间)”

我需要将其转换为c#中的以下格式(日期/字符串)以进行进一步处理

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

Convert.ToDateTime(SelectedData)    

以上代码出现错误:

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

有什么建议吗?

我无法更改收到日期的格式 最诚挚的问候。

3 个答案:

答案 0 :(得分:12)

您将需要使用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 :(得分:6)

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

如需了解更多信息,请访问:

答案 2 :(得分:1)

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