Nov 30, 2011

Вывод прошедшего времени в удобочитаемом виде на JavaScript

function date_from_string(dt){
 // 2011-11-30 15:40:50
 var df = dt.split(' ');
 var d = df[0].split('-');
 var t = df[1].split(':');
 return d1 = new Date(d[0],d[1]-1,d[2],t[0],t[1],t[2]);
}

function diff_date(d1){
 var r = (new Date() - d1)/1000;
 
 var tt = {
   sec: ['{} секунд','{} секунда','{} секунды'],
   min: ['{} минут','{} минута','{} минуты'],
   hour: ['{} часов','{} час','{} часа'],
   day: ['{} дней','{} день','{} дня']
 }
 function sec(x,dtt){
  var r;
  x = x.toFixed(0);
  if(x>=11 && x<=14) r = null
  else {
   var s = '' + x;
   if(s.length>1) s = s.substring(1);
   r = { '1':dtt[1], '2':dtt[2], '3':dtt[2], '4':dtt[2] }[s];
  }
  if(!r) r = dtt[0];
  return r.replace('{}',x)
 }
 
 if(r<60) return sec(r, tt.sec) + ' назад';
 r = r / 60;
 if(r<60) return sec(r, tt.min) + ' назад';
 r = r / 60;
 if(r<24) return sec(r, tt.hour) + ' назад';
 r = r / 24;
 if(r<1) return 'сегодня';
 if(r<2) return 'вчера';
 return sec(r, tt.day) + ' назад';
}

No comments: