【问题标题】:Date string conversion to unix timestamp in JavaScript / jQuery在 JavaScript / jQuery 中将日期字符串转换为 unix 时间戳
【发布时间】:2012-07-16 17:54:44
【问题描述】:

我有这种格式的日期字符串:

2009-07-15 00:00:00 - 2009-07-15 08:16:23

谁能帮我将日期字符串调整为 unix 时间戳,如下所示:

1247634000 - 1247663783

我正在使用GMT-5 时区。

可以使用哪些 JavaScript 或 jQuery 技术?

【问题讨论】:

    标签: javascript jquery unix-timestamp


    【解决方案1】:

    我强烈建议您在 js 中处理日期时使用 Moment 日期库。它真的很轻,很棒。

    var timeStamp = ( moment('2009-07-15 00:00:00').unix() )*1000
    

    【讨论】:

    • 这个库确实使语法更清晰,逻辑更简单。似乎很值得将它包含在以日期/时间为中心的 node.js 功能中。缩小了 6KB,适用于那些关心在浏览器端包含此内容的人。
    • 真的。当我尝试moment.js 时,在与其他答案苦苦挣扎之后,我立即感到安心。祝福创造moment.js的人!!!
    • 这也适用于 NodeJs,这是一个巨大的优势。
    • 如果 Moment.js 不在等式之外,这应该是公认的答案。轻巧且超级棒。对于那些使用 Angular 的人,还有一个 ng 版本(老实说,我被它的 amCalendar 过滤器宠坏了)。看起来您正试图获得“自 x 以来的时间”-我为此使用了这个,使用时刻:Math.floor((new Date().getTime() / 1000) - moment(timestamp).unix());
    • 我不需要乘以 1000。以下返回了一个完美的时间戳:moment('2009-07-15 00:00:00').unix()
    【解决方案2】:

    在 Javascript 中你可以直接将字符串传递给 Date 对象的构造函数,比如

    var date = new Date('2009-07-15 00:00:00'.split(' ').join('T'))

    这将为您提供日期对象并从中获取时间戳

    date.getTime() / 1000

    除以 1000 因为getTime 会给出以毫秒为单位的时间戳

    Working Demo

    注意:

    Firefox 无法解析给定的日期时间格式,因此我们需要先将其转换为正确的格式,因为我们只需将日期和时间组件之间的空格替换为“T”,这将使其成为有效的 ISO 8601格式和firefox都能解析

    参考:

    Date.parse in MDN

    ISO 8601 Date Format

    Same question asked here

    【讨论】:

    • 好的,firefox 无法解析日期格式,它只需要这些格式中的一种w3.org/TR/NOTE-datetime
    • 是的,它有效 :) 另一种方法是用斜杠替换破折号:codebins.com/bin/4ldqpas/3
    • 您的回答刚刚帮助解决了我在 LG webOS 上的应用程序的问题。由于某种原因,他们的系统无法解析没有“T”的典型日期字符串,例如 yyyy-mm-dd hh:mm:ss。
    【解决方案3】:
    var input = "2009-07-15 00:00:00 - 2009-07-15 08:16:23";
    input = input.split(" - ").map(function (date){
        return Date.parse(date+"-0500")/1000;
    }).join(" - ");
    

    Demo

    Date.parse docs

    注意:这不适用于旧浏览器,因为我使用的是 Array.map,但我认为您应该可以轻松地填充它。

    【讨论】:

      【解决方案4】:

      使用 split 方法可以将日期时间格式更改为最新,对每个人来说都非常简单易行。

       var str = "2017-05-09T00:00:00.000Z";
       var res = str.split("-",2);
       var res = str.split("T",1);
       var temp=res;
      

      【讨论】:

        猜你喜欢
        • 2011-03-16
        • 1970-01-01
        • 2019-07-30
        • 2012-06-23
        • 2011-09-23
        • 1970-01-01
        • 2016-12-18
        • 2022-01-21
        • 2012-09-01
        相关资源
        最近更新 更多