所以我有以下字符串“2013-12-10 23:33:05”
当我在jsfiddle中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'所以我不知道......有什么想法吗?
答案 0 :(得分:1)
如果您确定日期的格式为'YYYY-MM-DD HH:MM:SS',请在firefox上试试
var date = '2013-12-10 23:33:05'.replace(' ', 'T');
var d = new Date(date);
答案 1 :(得分:1)
在ES5之前,Date.parse解析日期字符串(与使用Date constructor解析相同)完全取决于实现。 ES5为兼容实现引入了version of ISO 8601,但并非所有使用的浏览器都符合要求。
因此,解析字符串日期和时间值的最佳方法是自己解析它。使用Date.parse的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
答案 2 :(得分:0)
您在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)