Home

Tags

Вывод кол-ва прошедшего времени от текущей даты на javascript

2011-11-30 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) + ' назад';
}

Пример
diff_date( date_from_string('2011-11-20 15:10:05') )
// Пример результатов:
// 2 секунды назад
// 5 минут назад
// 1 час назад
// 11 дней назад