javascript从纪元值获取小时和分钟

时间:2018-11-22 08:19:47

标签: javascript datetime

我正在使用以下代码从纪元获取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

我对此感到迷茫,因为上面代码的转换值对我来说似乎很奇怪。

2 个答案:

答案 0 :(得分:3)

您的代码有两个问题:

  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));

答案 1 :(得分:0)

不是您需要的,但有人可能认为获得非常快速的近似值很有用。

我用来处理大量的间隔。转换会很痛苦。

示例:纪元时间 1621271327 为 2021 年 5 月 17 日星期一 17:08:47 GMT

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