2 回答
TA贡献2037条经验 获得超6个赞
Unix时间值的数量秒,因为时代,不会有像你十进制1556214336.316
如果我参加1556214336
(不.316
),并把它放在一个转换器,我得到的输出04/25/2019 @ 5:45pm (UTC)
是不是1970年-似乎一个精确的时间(我的避风港尚未经过独立验证)
,那么,看来您1556214336.316
就是秒。自纪元以来的毫秒数。
Javascript使用相同的纪元,但是是自纪元以来的毫秒数,而不是秒数,因此,如果我对所获得的时间是正确的,则应该能够删除小数点后的位,并使用所得的数字字符串。确实
var d = new Date(1556214336316);
console.log('Date is: ' + d.toUTCString());
产生
Date is: Thu, 25 Apr 2019 17:45:36 GMT
与转换器的“ 5:45 pm”时间完全匹配
var d = new Date(1556214336316);
console.log('Date is: ' + d.toUTCString());
假设您的值1556214336.316是一个从Web API返回的String,则可以删除小数,并且可以像这样完成转换(请注意,您不必继续创建新Date对象):
convertDateToTimerFormat = (time) => {
const d = new Date( Number(time.replace(/\./g, '')) );
return `${d.getHours()}:${d.getMinutes()}:${d.getSeconds()}`;
};
console.log( 'time: ' + convertDateToTimerFormat('1556214336.316') );
根据您的使用,您可能想使用getUTCHours()
等。
TA贡献1789条经验 获得超8个赞
我对优雅并不了解,但这会以以下h:mm:ss格式计算并显示过期时间:
console.log(convertDateToTimerFormat(1556215236.316));
function convertDateToTimerFormat(time){
// Converts `time` to milliseconds to make a JS Date object, then back to seconds
const expiredSeconds = Math.floor(new Date()/1000) - Math.floor(new Date(time * 1000)/1000);
// Calculates component values
const hours = Math.floor(expiredSeconds / 3600), //3600 seconds in an hour
minutes = Math.floor(expiredSeconds % 3600 / 60),
seconds = expiredSeconds % 3600 % 60;
// Adds initial zeroes if needed
if (minutes < 10) { minutes = "0" + minutes; }
if (seconds < 10) { seconds = "0" + seconds; }
// Returns a formatted string
return `${hours}:${minutes}:${seconds}`;
}
添加回答
举报