将Javascript日期解析为C#DateTime

我在JavaScript中有日期对象,它给了我: "Wed Oct 01 2014 00:00:00 GMT+0200" ;

我尝试解析它,但我得到一个例外:

 string Date = "Wed Oct 01 2014 00:00:00 GMT+0200"; DateTiem d = DateTime.ParseExact(Date, "ddd MM dd yyyy HH:mm:ss GMTzzzzz", CultureInfo.InvariantCulture); 

MM格式说明符是从0112 2位数月份数。

您需要使用MMM格式说明符代替月份的缩写名称。

对于你的+0200部分,你需要使用K格式说明符 ,它具有时区信息而不是zzzzz

并且您需要将GMT部件的单引号用作'GMT'以将其指定为文字字符串分隔符。

 string s = "Wed Oct 01 2014 00:00:00 GMT+0200"; DateTime dt; if(DateTime.TryParseExact(s, "ddd MMM dd yyyy HH:mm:ss 'GMT'K", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt)) { Console.WriteLine(dt); } 

对于DateTime解析,不建议使用任何z格式说明符 。 因为它们表示本地时区UTC值的有符号偏移量 ,并且此说明符不影响DateTime.Kind属性 。 并且DateTime不保留任何偏移值。

这就是为什么这个说明符适合于DateTimeOffset解析。