目标:从过去获取Unix时间值,并以“10h 18m 22s”格式表示其与当前时间的偏差。
当前代码:
function humaniseTime(epoch) {
nowtime = (new Date).getTime()/1000; // current ms to s
secs = Math.round(nowtime-epoch);
hours = secs/3600;
secs -= hours*3600;
minutes = secs/60;
secs -= minutes*60;
clockstring = hours + "h " + minutes + "m " + secs + "s";
return clockstring;
}
问题在于,因为JavaScript不使用整数而是使用浮点数,所以我最终得到0.564166666小时而不是0小时17分22秒。使用舍入函数给我带来负面的时间,这是不好的。
答案 0 :(得分:0)
我为你写了另一个与你不同的解决方案,但是像魅力一样工作,这里是代码:
function secondsToString(seconds)
{
var numyears = Math.floor(seconds / 31536000);
var numdays = Math.floor((seconds % 31536000) / 86400);
var numhours = Math.floor(((seconds % 31536000) % 86400) / 3600);
var numminutes = Math.floor((((seconds % 31536000) % 86400) % 3600) / 60);
var numseconds = (((seconds % 31536000) % 86400) % 3600) % 60;
return numyears + " years " + numdays + " days " + numhours + " hours " + numminutes + " minutes " + numseconds + " seconds";
}
var epoch = Math.floor(1294862756114/1000); //in your case this will be function argument, converting it into seconds as well
alert("Epoch: " + epoch)
var time = Math.floor((new Date().getTime())/1000);
alert("Current Time: " + time);
var difference = time-epoch;
alert("Difference: " + secondsToString(difference));
相当直接的,希望你在理解它时不会遇到问题。我基本上添加了一个函数,它将秒数转换为年,月,日,小时数。您现在可以随意使用它来保留您需要的任何值。
<强> See the deamo here 强>