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

3
我正在使用以下代码获取时分(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

我对此有点困惑,因为上述代码中的转换值看起来非常奇怪。


这里的t是什么? - Vineesh
t是从服务器检索到的时间戳。 - Vik
2个回答

5

你的代码有两个问题:

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


另一个问题是我使用了字符串而不是数字,我进行了转换,现在它运行良好。 - Vik

3

也许不是你所需的,但这个方法可以快速地近似。

我通常会处理大量的时间间隔。转换可能会很痛苦。

例如:将时间戳1621271327转换为2021年5月17日周一17:08:47格林威治标准时间。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接