2014-01-12 7 views
0

У меня есть следующая функция:Javascript время между двумя датами

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

Вы могли бы рассматривать и петь [moment.js] (http://momentjs.com/docs/#/displaying/fromnow/) для этого. –

ответ

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; 

является более традиционным подходом для преобразования миллисекунд в минуты в часы в дни ...

2

Предполагая new_time в миллисекундах (очень вероятно), Вы должны иметь:

var minutes = new_time/1000/60; 
var hours= minutes/60; 
var days = hours/24; 

Приветствия

+0

Спасибо, есть какая-то разница между php-функцией microtime (true); и getTime(); –

Смежные вопросы