Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как задать дату отсчета таймера? (https://javascript.ru/forum/dom-window/63658-kak-zadat-datu-otscheta-tajjmera.html)

Exhumed 21.06.2016 00:48

Как задать дату отсчета таймера?
 
Есть таймер, но в таком виде при обновлении страницы таймер снова будет слетать на изначальное значение.
Как задать ему определенную дату отсчета или, в идеале, задать дату отсчета так, чтобы после прохождения оной, отсчет пошел в плюс?

var countdown = -353754;
var $display = [
		['',''], // 0
		['',''], // 1
		['',''], // 2
		['','']  // 3
];
{
	secs = parseInt(secs);	
	hh = secs / 3600;	
	hh = parseInt(hh);	
	mmt = secs - (hh * 3600);	
	mm = mmt / 60;	
	mm = parseInt(mm);	
	ss = mmt - (mm * 60);	
		
	if (hh > 23)	
	{	
	   dd = hh / 24;	
	   dd = parseInt(dd);	
	   hh = hh - (dd * 24);	
	} else { dd = 0; }	
		

	if (ss < 10)
	{
		$display[3][0].removeClass().addClass('int_0');
		$display[3][1].removeClass().addClass('int_'+ss);
	} else {
		$display[3][0].removeClass().addClass('int_'+ss.toString().substr(0,1));
		$display[3][1].removeClass().addClass('int_'+ss.toString().substr(1,1));
	}

	if (mm < 10)
	{
		$display[2][0].removeClass().addClass('int_0');
		$display[2][1].removeClass().addClass('int_'+mm);
	} else {
		$display[2][0].removeClass().addClass('int_'+mm.toString().substr(0,1));
		$display[2][1].removeClass().addClass('int_'+mm.toString().substr(1,1));
	}

	if (hh < 10)
	{
		$display[1][0].removeClass().addClass('int_0');
		$display[1][1].removeClass().addClass('int_'+hh);
	} else {
		$display[1][0].removeClass().addClass('int_'+hh.toString().substr(0,1));
		$display[1][1].removeClass().addClass('int_'+hh.toString().substr(1,1));
	}


	if (dd == 0)
	{
		$display[0][0].removeClass().addClass('int_0');
		$display[0][1].removeClass().addClass('int_0');
	} else {
		if(dd < 10)
		{
			$display[0][0].removeClass().addClass('int_0');
			$display[0][1].removeClass().addClass('int_'+dd);
		} else {
			$display[0][0].removeClass().addClass('int_'+dd.toString().substr(0,1));
			$display[0][1].removeClass().addClass('int_'+dd.toString().substr(1,1));
		}
	}	
}


{
	if (countdown < 0){}	
	else {	
		convert_to_time(countdown);
		setTimeout(function(){do_cd();}, 1000);
	}	
	countdown = countdown - 1;	
}
$(document).ready(function(){
	$display[0][0] = $('#display_0-0');
	$display[0][1] = $('#display_0-1');

	$display[1][0] = $('#display_1-0');
	$display[1][1] = $('#display_1-1');

	$display[2][0] = $('#display_2-0');
	$display[2][1] = $('#display_2-1');

	$display[3][0] = $('#display_3-0');
	$display[3][1] = $('#display_3-1');
	do_cd();
});

Rasy 21.06.2016 11:06

1. Получаем с помощью метода объекта Date.now() - количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC.
2. Инициализируем дату отсчета в миллисекундах или в стандартном формате с дальнейшем парсингом в миллисекунды.
3. Вычитаем из назначенной даты текущее время.
4. Остаток устанавливаем как аргумент отсчета для таймера.
var 
     dateNow = Date.now(),
     dateEnd = 'Jun 21 2017 11:42:15',
     dateEnd = Date.parse(dateEnd),
     dateSet = (dateEnd - dateNow) / 1000; // минуты
     
     alert('До 11:42:15 21 июня 2017 года, осталось - ' + dateSet + ' минут или ' + dateSet / 60 + ' часов');

Exhumed 21.06.2016 14:49

Цитата:

Сообщение от Rasy (Сообщение 420061)
1. Получаем с помощью метода объекта Date.now() - количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC.
2. Инициализируем дату отсчета в миллисекундах или в стандартном формате с дальнейшем парсингом в миллисекунды.
3. Вычитаем из назначенной даты текущее время.
4. Остаток устанавливаем как аргумент отсчета для таймера.
var 
     dateNow = Date.now(),
     dateEnd = 'Jun 21 2017 11:42:15',
     dateEnd = Date.parse(dateEnd),
     dateSet = (dateEnd - dateNow) / 1000; // минуты
     
     alert('До 11:42:15 21 июня 2017 года, осталось - ' + dateSet + ' минут или ' + dateSet / 60 + ' часов');

Можно пожалуйста поподробнее как это применить, а то я в js полный ноль)))


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