将ISO8601日期转换为纪元格式(unix时间戳)

Ste*_*eve 6 javascript date converter iso8601 unix-timestamp

如何使用javascript将ISO 8601日期(例如20140107)转换为Unix时间戳(例如1389120125)?

fvu*_*fvu 6

如果您使用的是支持ECMAscript 5的浏览器,则Date.parse()会接受ISO-8601日期字符串并返回一个以毫秒为单位的纪元值,因此只需将其除以1000就可以了.

然而

与您所声明的相反,您的输入字符串不符合ECMAscript中定义ISO-8601子集,因为它缺少各个字段之间的破折号.据我所知,破折号对于EMCAscript是强制性的(即使ISO 8601本身允许无破碎或基本格式).所以也许你必须做一些字符串解析并使用Date的构造函数之一和它的getTime()方法来获得相同的

new Date(year, month [, day, hour, minute, second, millisecond]);
Run Code Online (Sandbox Code Playgroud)

如果您希望与旧版浏览器保持兼容但仍使用Date.parse,则可以考虑包含此垫片

  • @Steve这正是我试图在我的答案中解释的问题,再加上奖金:你必须将该变量作为字符串传递,否则它将被视为一个数字.***但是***Javascript***不支持日期的基本,无破折号表示,这意味着`Date.parse("2014-01-07")`将起作用,而`Date.parse( "20140107")`不会.如果你坚持使用后者,将需要一些字符串解析. (3认同)