C# 字符串未被识别为有效的DateTime 01:01:0001错误

C# 字符串未被识别为有效的DateTime 01:01:0001错误,c#,datetime,C#,Datetime,我的建议如下: var StringDate = "Mon Oct 02 2017 16:44:23 GMT 0200 (Central European Summer Time)" DateTime dt = DateTime.Parse(StringDate); 将此字符串转换为日期时出现错误:字符串未被识别为有效的日期时间异常。dt=01:01:0001 00:00:00这不是c自动识别的有效日期/时间格式 请改用此格式: var StringDate = "Mon Oct 02 201

我的建议如下:

var StringDate = "Mon Oct 02 2017 16:44:23 GMT 0200 (Central European Summer Time)"
DateTime dt = DateTime.Parse(StringDate);

将此字符串转换为日期时出现错误:字符串未被识别为有效的日期时间异常。dt=01:01:0001 00:00:00这不是c自动识别的有效日期/时间格式

请改用此格式:

var StringDate = "Mon Oct 02 2017 16:44:23 +0200";
DateTime dt = DateTime.Parse(StringDate);
您需要修改传入的字符串。使用正则表达式删除括号部分,删除GMT,并在时间偏移之前添加加号

另一个选项是使用DateTime.ParseExact,但是仍然需要修改传入字符串:

var input = "Mon Oct 02 2017 16:44:23 GMT +0200 (Central European Summer Time)";
var dateTime = DateTime.ParseExact(
    input, 
    "ddd MMM dd yyyy HH:mm:ss 'GMT' zz'00' '(Central European Summer Time)'", 
    CultureInfo.InvariantCulture);
C希望任何时区信息在数字前都有一个-或+的字符,因此在不添加该字符的情况下无法提取时区信息。仅仅假设它是一个正值是不够的


此外,没有用于精确格式匹配的通配符,这意味着中欧夏季时间将在您的匹配字符串中硬编码。如果您有多个不同的时区,或者即使时区名称发生变化,例如夏令时切换,您也会遇到很多问题。

您是否尝试过使用ParseExact?我尝试过ParseExactStringDate,dd:mm:yyyy,CultureInfo.InvariantCulture但它不起作用您需要指定输入字符串的确切格式。问问自己,2017年10月2日星期一16:44:23 GMT 0200中欧夏季时间是否与dd:mm:yyyy完全匹配?