weird Date()解析错误

weird Date() parsing error

本文关键字:错误 Date weird      更新时间:2023-09-26

所以我有以下字符串"2013-12-10 23:33:05"

当我在jsfield中执行var d = new Date("2013-12-10 23:33:05");时。http://jsfiddle.net/38TuV/1/

d包含正确的对象,没有问题。

但是在我的网站中当我做

var date = '2013-12-10 23:33:05';
var d =  new Date(date);

d是无效数据。更奇怪的是,如果你看小提琴,我也做了相同的副本作为第二个例子,它似乎工作

这很奇怪,这可能是我的页面特有的东西,但我正在登录data,它打印'2013-12-10 23:33:05',所以我不知道…什么好主意吗?

如果您确定日期的格式为'YYYY-MM-DD HH:MM:SS',请在firefox浏览器上试试

var date = '2013-12-10 23:33:05'.replace(' ', 'T');
var d =  new Date(date);

ES5之前,按date解析日期字符串。parse(与使用Date构造函数的解析相同)完全依赖于实现。ES5为兼容实现引入了ISO 8601版本,但并非所有使用的浏览器都兼容。

因此,解析字符串日期和时间值的最佳方法是自己解析它。与ES5版本的日期。解析时,没有时区的ISO 8601格式字符串将被视为UTC,因此:
function parseUTCDateTime(s) {
  s = s.split(/'D+/g);
  return new Date(Date.UTC(s[0], --s[1], s[2], s[3], s[4], s[5], 0));
}
parseUTCDateTime('2013-12-10 23:33:05'); // Wed 11 Dec 07:33:05 UTC+0800 2013

您在JSFiddle外部资源中定义了dateclass.js

我删除了它,它工作得很好。http://jsfiddle.net/38TuV/2/

我不知道你为什么有它,也许是一个垫片。不管怎样,在控制台中没有它也可以正常工作。

使用Chromium控制台(control-shift-J),它工作良好:

var date = '2013-12-10 23:33:05';
var d =  new Date(date);
undefined // chromium console is printing the return value of the assignment, undef is OK
date
"2013-12-10 23:33:05"
d
Tue Dec 10 2013 23:33:05 GMT-0500 (EST)