Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Таймер отображает отрицательные числа (https://javascript.ru/forum/misc/44928-tajjmer-otobrazhaet-otricatelnye-chisla.html)

DmitriSpartak 06.02.2014 22:49

Таймер отображает отрицательные числа
 
Нашел на сайте вот этот код:
function two(a) {
		return (9 < a ? "" : "0") + a;
	}
	function formatTime(a) {
		a = Math.floor(a / 1E3);
		var b = Math.floor(a / 60),
		c = Math.floor(b / 60),
		d = c / 24 | 0,
		c = c % 24;
		a %= 60;
		b %= 60;
		return d + days(d) + two(c) + hours(c) + two(b) + minutes(b) + two(a) +  seconds(a);
		};
				 
		// функция для склонения слов ( (1)"день", (2)"дня", (5)"дней")
				 
	function plural(str1,str2,str5){
		return function ( n ) {
                                return ((((n%10)==1)&&((n%100)!=11))?(str1):(((((n%10)>=2)&&((n%10)<=4))&&(((n%100)<10)||((n%100)>=20)))?(str2):(str5)))
                                }
		}
				 
	var days =  plural('день', 'дня', 'дней'),
	hours = plural('час', 'часа', 'часов'),
	minutes = plural('минута', 'минуты', 'минут'),
	seconds = plural('секунда', 'секунды', 'секунд');
				 
	function Time() {
		var data = Date.parse('01/30/2014') // дата начала 1 шестидневки  строго "месяц/день/год"
		data = new Date(data)
		for (; (new Date).getTime() > data; )  {
			data.setDate(data.getDate()+2)
			}
		var a = data, m = -240 - a.getTimezoneOffset();
		a.setMinutes(m, 0, 0);
		var a = a.getTime() -  (new Date).getTime();
		document.getElementById("show").innerHTML = formatTime(a);
		window.setTimeout(Time, 1E3)
		};
				Time();

Счетчик работает нормально, но иногда появляются, когда счетчик кончается, появляются отрицательные числа и он начинает идти в "минус"
Помогите, в чем может быть проблема?

рони 06.02.2014 23:28

DmitriSpartak,
попробуйте обновлённую версию тут

если ошибка повторится скопируйте строку вывода с отрицательными данными.

DmitriSpartak 07.02.2014 00:09

Спасибо, что так быстро откликнулись.
У меня вообще с вашим скриптом все отлично, а вот у знакомого в Москве почему-то иногда появляются отрицательное время, вот полтора часа назад примерно отображалось:0 дней 0-1 часов, 0-28 минут, 0-20 секунд.
Причем время у него идет в сторону увеличения(т.е. приближается к нулю).
Вот сейчас полночь прошла и снова все заново запустилось, причем уже как положено (1 день 23 часа 59 минут 59 секунд)
Помогите пожалуйста, не понимаю в чем проблема

рони 07.02.2014 00:13

DmitriSpartak,
вы пост выше видите -- там ссылка -- заберите скрипт проверьте потом пишите про ошибки


Часовой пояс GMT +3, время: 03:59.