如果dd = "2012-08-20 01:16:00";
将此日期转换为时间戳(如下面的代码所示)
var t = new Date(dd).getTime();
http://jsfiddle.net/userdude/DHxwR/
结果t = NaN
为什么?
答案 0 :(得分:5)
根据ECMA-262(§15.9.1.15,日期时间字符串格式,第169页),唯一需要接受的日期字符串格式为:
[+YY]YYYY[-MM[-DD]][THH:mm[:ss[.sss]]]Z
其中Z
为Z
(对于UTC)或由+
或-
后跟HH:mm
组成的偏移量。不应依赖特定浏览器支持的任何其他格式,因为无法保证持续支持。
因此,请使用T
替换空格,并在将其传递给Z
构造函数之前附加Date
或固定时区偏移量。例如,如果日期和时间在UTC + 8区域中:
var dd = "2012-08-20 01:16:00";
var t = new Date(dd.replace(' ', 'T') + '+08:00').getTime();
这将返回从1970年1月1日午夜UTC到指定日期的毫秒数,将其视为通用时间(如果您附加Z
)或固定时区的本地时间您指定的偏移量。
请注意,这将采取不同的行动,因为日期不会简单地视为用户系统时区的本地时间,就像问题的示例那样。但是,我不能想到这样做会有用的情况,因为根据用户的配置会得到不同的结果 - 但实际上,无论你身在何处,两个日期之间的时差总是相同的。
答案 1 :(得分:0)
尝试在年,月和日值之间使用空格或逗号。
答案 2 :(得分:0)
很简单:
+(new Date("2012-08-20 01:16:00"));