如果 dd = "2012-08-20 01:16:00";
将此日期转换为时间戳(如以下代码所示)
var t = new Date(dd).getTime();
http://jsfiddle.net/userdude/DHxwR/
结果 t = NaN
为什么?
最佳答案
根据 ECMA-262 (§15.9.1.15,日期时间字符串格式,第 169 页),唯一需要接受的日期字符串格式是:
[+YY]YYYY[-MM[-DD]][THH:mm[:ss[.sss]]]Z
其中 Z
是 Z
(对于 UTC)或由 +
或 -
组成的偏移量> 后跟 HH:mm
。不应依赖特定浏览器恰好支持的任何其他格式,因为不能保证持续支持。
因此,将空格替换为 T
并在将其传递给 Date
之前附加 Z
或固定时区偏移量构造函数。例如,如果日期和时间在 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
)或本地时间您指定的固定时区偏移量。
请注意,这会有所不同,因为日期不会像您的问题示例那样简单地视为用户系统时区的本地时间。但是,我想不出这样做会有用的情况,因为根据用户的配置,您会得到不同的结果——但实际上,无论您身在何处,两个日期之间的时差始终相同。
关于javascript - 将 DateTime 字符串转换为 javascript 中的时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12030478/