将Javascript日期解析为C# DateTime

3

我在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);
1个回答

7

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);
}

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

这就是为什么该说明符适用于 DateTimeOffset 解析的原因。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接