我有以下字符串,我需要解析为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
有什么想法吗?
答案 0 :(得分:3)
如果偏移量不重要,我建议您在时间之后截断字符串。
看起来格式应该允许通过查找位置16之后的第一个空格(示例中的时间开始;如果日期编号更短,则在时间的一部分):
int endOfTime = text.IndexOf(' ', 16);
if (endOfTime == -1)
{
throw new FormatException("Unexpected date/time format");
}
text = text.Substring(0, endOfTime);
DateTime dateTime = DateTime.ParseExact(text, "ddd MMM d yyyy HH:mm:ss",
CultureInfo.InvariantCulture);
(我假设月份和日期的名称总是英文。)
答案 1 :(得分:0)
如果你确定它将永远是格林尼治标准时间的夏令时,你不能使用它:
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);