Показать сообщение отдельно
  #2 (permalink)  
Старый 19.05.2013, 21:18
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

А пример pastTime можно? Казалось бы, если указать в этой строчке, что часовой пояс Гринвичский, то всё должно быть хорошо.

function relativeTime(pastTime)
{	
	var origStamp = Date.parse(pastTime);
	var curDate = new Date();
	var currentStamp = curDate.getTime();

	
	var difference = parseInt((currentStamp - origStamp)/1000);

	if(difference < 0) return false;

	if(difference <= 5)		return "только что";
	if(difference <= 20)		return "сек";
	if(difference <= 60)		return "мин";
	if(difference < 3600)		return parseInt(difference/60)+" мин";
	if(difference <= 1.5*3600) 	return "час";
	if(difference < 23.5*3600)	return Math.round(difference/3600)+" час";
	if(difference < 1.5*24*3600)	return "день назад";
	
	var dateArr = pastTime.split(' ');
	dateArr[2] = (dateArr[2]);
	return dateArr[1]+'.'+dateArr[2]+' | '+dateArr[4].replace(/\:\d+$/,'')+(dateArr[3]!=curDate.getFullYear()?' '+dateArr[3]:'');
}

alert( relativeTime('Wed May 19 10:12:58 +0000 2013') )
alert( relativeTime('Wed May 19 14:12:58 +0400 2013') )  // то же время в московском часовом поясе


P.S. Зачем Вы парсите pastTime split'ом? Постройте лучше из него объект Date и работайте с его методами:
var months = "январь, февраль, март, апрель, май, июнь, июль, август, сентябрь, октябрь, ноябрь, декабрь".split(', ')

function relativeTime(pastTime) {
	var origDate = new Date(pastTime);
	var curDate = new Date();

	var difference = parseInt((curDate - origDate) / 1000);

	if (difference < 0) return false;

	if (difference <= 5) return "только что";
	if (difference <= 20) return "сек";
	if (difference <= 60) return "мин";
	if (difference < 3600) return parseInt(difference / 60) + " мин";
	if (difference <= 1.5 * 3600) return "час";
	if (difference < 23.5 * 3600) return Math.round(difference / 3600) + " час";
	if (difference < 1.5 * 24 * 3600) return "день назад";

	return origDate.getDate() + '.' + months[origDate.getMonth()] + ' | ' + origDate.getHours() + (origDate.getFullYear() != curDate.getFullYear() ? ' ' + origDate.getFullYear() : '');
}

alert( relativeTime('Wed May 19 10:12:58 +0000 2013') )
alert( relativeTime('Wed May 19 14:12:58 +0400 2012') )

Последний раз редактировалось B@rmaley.e><e, 19.05.2013 в 21:29.
Ответить с цитированием