首页 文章

在javascript中将UTC字符串转换为纪元时间

提问于
浏览
7

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

如果这是不可能的,有没有办法比较(如<,>)UTC日期时间字符串?

5 回答

  • 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
    
  • 0

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

  • 0

    这是怎么做的 . 没有非 . Date.UTC接受UTC时间戳并返回纪元

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

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

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

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

  • 1

    只要日期时间字符串像ISO8601-ish格式一样明确(即不是MM / DD / YYYY与DD / MM / YYYY),您可以使用Date构造函数来解析它,然后使用Math.floor:

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

相关问题