【发布时间】:2011-09-19 14:39:08
【问题描述】:
我有以下代码
var c = new Date(Date.parse("2011-06-21T14:27:28.593Z"));
console.log(c);
在 Chrome 上,它会在控制台上正确打印出日期。在 Safari 中 它失败。谁是正确的,更重要的是什么是最好的方法 处理这个?
【问题讨论】:
-
他们都给我
Tue Jun 21 2011 10:27:28 GMT-0400 (Eastern Daylight Time) -
你确定。 jsfiddle.net/A26Gu 在 safari 版本 5.0.4 (6533.20.27) 上运行在“无效日期”的控制台中给我一个输出
-
为什么要创建两次 Date 对象?你对正确的定义是什么?您可以使用“Date.toISOString()”方法。但请注意:旧版浏览器不支持它。
-
Javascript Date 支持 2 个时区,UTC 和来自操作系统的本地时区。您不能确定本地时区设置是否正确。由于 Javascript 是客户端,因此您不能真正相信它会做任何正确的事情 - 甚至不能解析日期。任何应用程序关键计算都应在服务器端完成。
-
@Erik——好评论,浏览器中的日期非常不可靠。在
new Date(Date.parse(string))中使用Date.parse 是多余的,因为如果使用字符串调用Date constructor,它无论如何都会传递给Date.parse。此外,Safari 在创建日期方面存在一些错误(如果不是不可能的话)。
标签: javascript parsing date google-chrome safari