C# 如何解析包含GMT到DateTime的字符串?

C# 如何解析包含GMT到DateTime的字符串?,c#,string,datetime,type-conversion,C#,String,Datetime,Type Conversion,如何转换此字符串: string aa ="Thu Jul 02 2015 00:00:00 GMT+0100 (GMT Standard Time)"; 进入约会时间 我尝试使用Convert.ToDateTime(aa)但不起作用 谢谢 编辑:错误消息-未使用以下方法将字符串识别为有效的日期时间: 使用方法: 您可以与正确的格式字符串一起使用: string dtString = "Thu Jul 02 2015 00:00:00 GMT+0100"; string format = "

如何转换此字符串:

string aa ="Thu Jul 02 2015 00:00:00 GMT+0100 (GMT Standard Time)"; 
进入约会时间

我尝试使用
Convert.ToDateTime(aa)但不起作用
谢谢

编辑:错误消息-未使用以下方法将字符串识别为有效的日期时间:

使用方法:

您可以与正确的格式字符串一起使用:

string dtString = "Thu Jul 02 2015 00:00:00 GMT+0100";
string format = "ddd MMM dd yyyy HH:mm:ss 'GMT'K";
DateTime date;
bool validFormat = DateTime.TryParseExact(dtString, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out date);
Console.Write(validFormat ? date.ToString() : "Not a valid format");
如果字符串末尾包含
(GMT标准时间)
,则只需先将其删除:

dtString = dtString.Replace("(GMT Standard Time)", "").Trim();
或使用此格式模式:

string format = "ddd MMM dd yyyy HH:mm:ss 'GMT'K '(GMT Standard Time)'";
更多信息:

您可以使用正确的格式字符串:

string dtString = "Thu Jul 02 2015 00:00:00 GMT+0100";
string format = "ddd MMM dd yyyy HH:mm:ss 'GMT'K";
DateTime date;
bool validFormat = DateTime.TryParseExact(dtString, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out date);
Console.Write(validFormat ? date.ToString() : "Not a valid format");
如果字符串末尾包含
(GMT标准时间)
,则只需先将其删除:

dtString = dtString.Replace("(GMT Standard Time)", "").Trim();
或使用此格式模式:

string format = "ddd MMM dd yyyy HH:mm:ss 'GMT'K '(GMT Standard Time)'";
更多信息:

由于您的字符串中有一个,因此我宁愿解析而不是
DateTime
。如果不转义它们,就无法解析
GMT
(GMT标准时间)
部分

顺便说一下,
DateTime
DateTimeOffset
都是时区感知<对于这种情况,code>DateTimeOffset
DateTime
稍微好一点。它有UTC偏移量,但这不能保证时区信息,因为不同的时区可以有相同的偏移量值

即使是,时区缩写也没有标准化<例如,code>CST有几种含义

string s = "Thu Jul 02 2015 00:00:00 GMT+01:00 (GMT Standard Time)";
DateTimeOffset dto;
if (DateTimeOffset.TryParseExact(s, "ddd MMM dd yyyy HH:mm:ss 'GMT'K '(GMT Standard Time)'", 
                                 CultureInfo.InvariantCulture,
                                 DateTimeStyles.None, out dto))
{
     Console.WriteLine(dto);
}
现在,您有一个
DateTimeOffset
作为
{02.07.2015 00:00:00+01:00}

既然字符串中有一个,我宁愿解析而不是
DateTime
。如果不转义它们,就无法解析
GMT
(GMT标准时间)
部分

顺便说一下,
DateTime
DateTimeOffset
都是时区感知<对于这种情况,code>DateTimeOffset比
DateTime
稍微好一点。它有UTC偏移量,但这不能保证时区信息,因为不同的时区可以有相同的偏移量值

即使是,时区缩写也没有标准化<例如,code>CST有几种含义

string s = "Thu Jul 02 2015 00:00:00 GMT+01:00 (GMT Standard Time)";
DateTimeOffset dto;
if (DateTimeOffset.TryParseExact(s, "ddd MMM dd yyyy HH:mm:ss 'GMT'K '(GMT Standard Time)'", 
                                 CultureInfo.InvariantCulture,
                                 DateTimeStyles.None, out dto))
{
     Console.WriteLine(dto);
}
现在,您有一个
DateTimeOffset
作为
{02.07.2015 00:00:00+01:00}


MSDN
DateTime.Parse
包含您需要的所有信息。它是如何工作的?有错误信息吗?意外行为?MSDN
DateTime.Parse
包含您需要的所有信息。它是如何工作的?有错误信息吗?意外行为?已尝试
DateTime convertedDate=DateTime.Parse(aa)引发异常:
字符串未被识别为有效的DateTime
。已尝试
DateTime convertedDate=DateTime.Parse(aa)引发异常:
字符串未被识别为有效的日期时间