【发布时间】:2014-01-25 14:09:00
【问题描述】:
如何使用 javascript 将 ISO 8601 日期(例如 20140107)转换为 Unix 时间戳(例如 1389120125)?
【问题讨论】:
标签: javascript date converter unix-timestamp iso8601
如何使用 javascript 将 ISO 8601 日期(例如 20140107)转换为 Unix 时间戳(例如 1389120125)?
【问题讨论】:
标签: javascript date converter unix-timestamp iso8601
如果您使用支持 ECMAscript 5 的浏览器,Date.parse() 接受 ISO-8601 日期字符串并以毫秒为单位返回一个纪元值,因此只需将其除以 1000 即可。
与您所说的相反,您的输入字符串不符合ISO-8601 subset defined in ECMAscript,因为它缺少各个字段之间的破折号。据我所知,破折号对于 EMCAscript 是强制性的(即使 ISO 8601 本身允许无破折号或基本格式)。所以也许你必须做一些字符串解析并使用 Date 的构造函数之一及其getTime() 方法来获得相同的
new Date(year, month [, day, hour, minute, second, millisecond]);
如果您想与旧版浏览器保持兼容但仍使用 Date.parse,您可以考虑包含 this shim
【讨论】:
Date.parse(20140107); 并得到了NaN。任何想法为什么它不起作用?
Date.parse("2014-01-07") 可以工作,而Date.parse("20140107") 不会。如果你坚持使用后者,则需要进行一些字符串解析。