我有以下功能:
function update_comments(){
$('.comment_list_item').each(function(){
var current_comment = $(this).find('.comment_time');
var old_text = current_comment.text();
var current_time = new Date().getTime();
var timer = $(this).find('.hour_glass')
var old_time = parseFloat(timer.val());
var new_time = current_time - old_time;
var minutes=1000*60;
var hours=minutes*60;
var days=hours*24;
var new_text = '';
if(days > 0){
new_text = days+' Days ago';
}else if(hours > 0){
if(hours === 1){
new_text = hours+' Hour ago';
}else{
new_text = hours+' Hours ago';
}
}else{
if(minutes === 1){
new_text = minutes+' Minute ago';
}else{
new_text = minutes+' Minutes ago';
}
}
current_comment.text(new_text);
});
}
其中old_time是值为microtime(true);
现在1分钟后结果是86400000天,谁能告诉我为什么?
答案 0 :(得分:3)
您是否仔细阅读过您的代码?它包括以下几行:
var minutes=1000*60;
var hours=minutes*60;
var days=hours*24;
所以是的,你是根据常数(不是旧时和新时间之间的差异)来计算分钟,小时,天。具体来说,从上面可以看出
days = 1000 * 60 * 60 * 24 = 86400000
就像你观察到的一样。
以下内容:
var minutes = milliseconds / (1000 * 60);
var hours = minutes / 60;
var days = hours / 24;
是将毫秒转换为几分钟甚至几小时的传统方法......
答案 1 :(得分:2)
假设new_time
以毫秒为单位(非常可能),您应该:
var minutes = new_time / 1000 / 60;
var hours= minutes / 60;
var days = hours / 24;
干杯