【问题标题】:Converting UTC string to epoch time in javascript在javascript中将UTC字符串转换为纪元时间
【发布时间】:2011-08-06 12:08:55
【问题描述】:

如何在 javascript 中将 UTC 日期时间字符串(例如 2011-03-29 17:06:21 UTC)转换为 Epoch(毫秒)?

如果这不可能,有什么方法可以比较(如 )UTC 日期时间字符串?

【问题讨论】:

    标签: javascript datetime epoch


    【解决方案1】:

    请注意,UTC 日期字符串可以按字典顺序进行比较,就像字符串一样,因为高阶值出现在字符串的最左侧。

    var s1 = '2011-03-29 17:06:21 UTC'
      , s2 = '2001-09-09 01:46:40 UTC';
    s1 > s2; // => true
    s2 > s1; // => false
    

    您可以使用Date.UTC 方法从示例字符串中提取日期字段并返回毫秒数:

    var getEpochMillis = function(dateStr) {
      var r = /^\s*(\d{4})-(\d\d)-(\d\d)\s+(\d\d):(\d\d):(\d\d)\s+UTC\s*$/
        , m = (""+dateStr).match(r);
      return (m) ? Date.UTC(m[1], m[2]-1, m[3], m[4], m[5], m[6]) : undefined;
    };
    getEpochMillis('2011-03-29 17:06:21 UTC'); // => 1301418381000
    getEpochMillis('2001-09-09 01:46:40 UTC'); // => 1000000000000
    

    【讨论】:

    • +1 表示优雅,但 Date.parse 在 Safari 4.1 上返回 NaN。在 Firefox 3.6 上运行良好。
    • @Vik David:感谢 Safari 的提醒;我更新了我的答案以使用 ECMA-262 第 5 版中定义的 UTC 方法,应该得到更好的支持。日期解析肯定是 JavaScript 中的一个痛点……
    【解决方案2】:

    使用datejs 将帮助您将UTC 字符串转换为日期对象。之后,只需在日期对象上调用 .getTime() 即可获取毫秒数。

    【讨论】:

    • 您将如何做到这一点?我已经包含 date.js lib 并尝试了 new Date("2011-03-29 17:06:21 UTC") 和 Date.parse("2011-03-29 17:06:21 UTC") 但它们返回无效或南。
    【解决方案3】:

    这是怎么做的。没有废话。 Date.UTC 接受 UTC 时间戳并返回 epoch

    var epoch_date = Date.UTC(year,mon,day,hours,min,sec,milisec);
    

    【讨论】:

      【解决方案4】:

      只要日期时间字符串是类似 ISO8601 格式的明确格式(即不是 MM/DD/YYYY 与 DD/MM/YYYY),您就可以使用 Date 构造函数对其进行解析,然后使用 Math.floor:

      Math.floor(new Date('2011-03-29 17:06:21 UTC') / 1000); // => 1301418381
      

      【讨论】:

        【解决方案5】:

        您可以像这样使用getDateFromFormat(dateValue, dateFormat) (available here)

        getDateFromFormat("2011-03-29 17:06:21","yyyy-MM-dd HH:mm:ss")
        

        它以毫秒为单位返回纪元时间。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-11-22
          • 2015-12-19
          • 2021-12-31
          • 2013-01-25
          • 2014-02-28
          • 1970-01-01
          • 2019-09-26
          • 2015-11-19
          相关资源
          最近更新 更多