C# DateTime.ParseExact的正确格式

C# DateTime.ParseExact的正确格式,c#,datetime,datetime-format,C#,Datetime,Datetime Format,我需要将以下字符串解析为DateTime: Thu Aug 14 2014 00:00:00 GMT 0100 (GMT Summer Time) 我不确定为我的DateTime.ParseExact提供什么格式来实现这一点。在标准日期/时间格式字符串中,我能找到的最接近的是完整的日期/时间模式(长时间),如下所示,但这不起作用 DateTime.ParseExact("Thu Aug 14 2014 00:00:00 GMT 0100 (GMT Summer Time)", "F", Cul

我需要将以下字符串解析为DateTime:

Thu Aug 14 2014 00:00:00 GMT 0100 (GMT Summer Time)
我不确定为我的
DateTime.ParseExact提供什么格式来实现这一点。在标准日期/时间格式字符串中,我能找到的最接近的是完整的日期/时间模式(长时间),如下所示,但这不起作用

DateTime.ParseExact("Thu Aug 14 2014 00:00:00 GMT 0100 (GMT Summer Time)", "F", CultureInfo.InvariantCulture); // FormatException

有什么想法吗?

如果偏移量不重要,我建议您在时间过后截断字符串

看起来格式应该允许在位置16之后找到第一个空格(在您的示例中是时间的开始;如果日数较短,则部分时间):


(我假设月和日的名称都是英文的。)

如果您确定总是格林尼治标准时间(GMT)的夏季,您能用这个吗:

var str = "Mon Jan 05 1987 07:45:30 GMT+0000 (GMT Summer Time)";
var f = "ddd MMM dd yyyy hh:mm:ss 'GMT'K' (GMT Summer Time)'";
var dateTime = DateTime.ParseExact(str, f, CultureInfo.InvariantCulture);
或者,如果夏季/冬季可以更改,但始终是GMT,而不考虑偏移量

var str = "Mon Jan 05 1987 07:45:30 GMT+0000 (GMT Summer Time)".Split('(')[0].Trim();
var f = "ddd MMM dd yyyy hh:mm:ss 'GMT'K";
var dateTime = DateTime.ParseExact(str, f, CultureInfo.InvariantCulture);

你能举其他时区的例子吗?(我肯定你必须先做一些字符串操作。)你关心时区偏移量,还是只想要本地时间?我只有一个GMT的例子。本地时间很好,谢谢,偏移量不重要。不确定信息是否相关,但日期字符串是从KendoUI网格数据项传递的谢谢Jon,只要我在您的answer@Jimsan:不要这样做-而是更改索引。我现在已经修正了我的答案-基本上我以前算错了。C#没有办法解析时区吗?@jjxtra:没有内置到DateTime.parse等中。没有。我可以使用这个格式字符串使用DateTime.ParseExact解析出数字时区,但我猜是通用的DateTime.parse调用无法做到这一点,至少从我最初的观察来看:
dd/MMM/yyyy:HH:mm:ss zzzz
对于像
02/Mar/2020:12:13:14-0400这样的字符串
var str = "Mon Jan 05 1987 07:45:30 GMT+0000 (GMT Summer Time)".Split('(')[0].Trim();
var f = "ddd MMM dd yyyy hh:mm:ss 'GMT'K";
var dateTime = DateTime.ParseExact(str, f, CultureInfo.InvariantCulture);