【问题标题】:Convert ISO8601 date to epoch format (unix timestamp)将 ISO8601 日期转换为纪元格式(unix 时间戳)
【发布时间】:2014-01-25 14:09:00
【问题描述】:

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

【问题讨论】:

    标签: javascript date converter unix-timestamp iso8601


    【解决方案1】:

    如果您使用支持 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。任何想法为什么它不起作用?
    • @Steve 这正是我试图在回答中解释的问题,另外还有一个好处:您必须将该变量作为字符串传递,否则它将被视为数字。 然而 Javascript支持基本的、无破折号的日期表示,这意味着Date.parse("2014-01-07") 可以工作,而Date.parse("20140107") 不会。如果你坚持使用后者,则需要进行一些字符串解析。
    • @fvu 感谢您的解释。我很感激。 :)
    猜你喜欢
    • 2018-08-03
    • 2013-01-08
    • 2015-01-20
    • 2017-08-13
    • 2017-12-20
    • 1970-01-01
    • 2021-02-19
    • 2016-09-15
    相关资源
    最近更新 更多