我正在使用以下代码从纪元获取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
我对此感到迷茫,因为上面代码的转换值对我来说似乎很奇怪。
答案 0 :(得分:3)
您的代码有两个问题:
对于您指定的示例值,由于已经以毫秒表示,因此不需要乘以1000。
如果要不考虑本地时区信息,则必须使用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