将Javascript日期解析为C#DateTime

use*_*034 3 c# string 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);
Run Code Online (Sandbox Code Playgroud)

Son*_*nül 5

MM格式说明2从数字的月份数0112.

您需要使用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);
}
Run Code Online (Sandbox Code Playgroud)

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

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