代码之家  ›  专栏  ›  技术社区  ›  Vik

从历元值获取小时和分钟的javascript

  •  1
  • Vik  · 技术社区  · 7 年前

    我使用下面的代码从epoch获取hh:mm

     var dt = new Date(t*1000);  
        var hr = dt.getHours();
        var m = "0" + dt.getMinutes();
        return hr+ ':' + m.substr(-2)
    

    对于以下值:

    1542895249079  prints: 19:37  Expected: 2:00 PM
    1542897015049  prints: 6:10  Expected: 2:30 PM
    1542902445344  prints: 2:35  Expected: 4:00 PM
    

    我有点迷茫,因为上面代码中的转换值在我看来完全奇怪。

    1 回复  |  直到 7 年前
        1
  •  4
  •   Robby Cornelissen    7 年前

    您的代码有两个问题:

    1. 对于您指定的示例值,不需要乘以1000,因为它们已经用毫秒表示。

    2. getUTCHours() getUTCMinutes() .

    function convert(t) {
      const dt = new Date(t);
      const hr = dt.getUTCHours();
      const m = "0" + dt.getUTCMinutes();
      
      return hr + ':' + m.substr(-2)
    }
    
    console.log(convert(1542895249079));
    console.log(convert(1542897015049));
    console.log(convert(1542902445344));
        2
  •  0
  •   profimedica    5 年前

    不是你所需要的,但有人可能会认为有用,以获得一个非常快的近似。

    我习惯于处理大量的时间间隔。转换将是痛苦的。

    例如:大纪元时间1621271327,即2021年5月17日星期一格林尼治标准时间17:08:47

    1621271327 % 86400 / 3600 => 17.14 // hours
    1621271327 % 3600 / 60 => 8.78 // minutes
    1621271327 % 60 => 47 // seconds