Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Помогите доделать таймер (https://javascript.ru/forum/events/34353-pomogite-dodelat-tajjmer.html)

hoax 30.12.2012 19:49

Помогите доделать таймер
 
Всем привет!
Не могу додумать, как сделать отсчет времени, вот что получилось

var timer = setInterval(function() {

var my_timer = document.getElementById('my_timer');

// текущее время
var now = new Date;
var h = now.getHours();
var s = now.getSeconds();

// нужное время

var start = new Date(2013, 0, 1);

// "До времени х осталось : часов, минут, секунд?"

}, 1000)


Если просто ВЫЧЕСТЬ нужное время - текущенн = получится черт знает что, помоги ребят, если можно в этой функции

hoax 30.12.2012 21:42

есть мнения?

Hekumok 30.12.2012 22:17

Пойдет?
<div>Осталось <span id="my_timer"></span></div>
<script>
var date = new Date(2013, 0) ;
var now = new Date ;
var ms = date - now ;
var hour = ms/1000/60/60^0 ;
var min = (ms-hour*1000*60*60)/1000/60^0 ;
var sec = (ms-hour*1000*60*60-min*1000*60)/1000^0 ;
var span = document.getElementById("my_timer") ;
var hours = (hour<10) ? "0"+hour : hour ;
var mins = (min<10) ? "0"+min : min ;
var secs = (sec<10) ? "0"+sec : sec ;
span.innerHTML = hours+":"+mins+":"+secs ;
function time() {
sec-- ;
if(sec<0) {
sec = 59 ;
min-- ;
} ;
if(min<0) {
min = 59 ;
hour-- ;
} ;
var hours = (hour<10) ? "0"+hour : hour ;
var mins = (min<10) ? "0"+min : min ;
var secs = (sec<10) ? "0"+sec : sec ;
span.innerHTML = hours+":"+mins+":"+secs ;
setTimeout(time, 1000) ;
} ;
setTimeout(time, 1000) ;
</script>

hoax 30.12.2012 23:41

Что мы делаем в данный строке объясните поподробнее плиз)

var hour = ms/1000/60/60^0 ;
var min = (ms-hour*1000*60*60)/1000/60^0 ;
var sec = (ms-hour*1000*60*60-min*1000*60)/1000^0 ;

Hekumok 31.12.2012 00:04

hoax, получаем часы, минуты и секунды :) если вас смущает ^0 - так это просто округление числа

hoax 31.12.2012 00:41

Да мне интересно, почему идет умножение/деление именно на 1000, 60, 60?:)

hoax 31.12.2012 01:19

справедливо:-E

Your 31.12.2012 10:11

<?php
date_default_timezone_set('Europe/Moscow');
$date=date('M d,Y H:i:s');
$time=strtotime($date);
$new_date='Nov 27,2012 20:00:00';
$new_time=strtotime($new_date);
$loc='http://'.$_SERVER['SERVER_NAME'].'/';
if(isset($_COOKIE['lang'])) {
	$file=$_COOKIE['lang'];
} else {
	$file='ru';
}
$lang['ru']=array(
'open'=>'До открытия:',
'days'=>'Дней:',
'hours'=>'Часов:',
'minutes'=>'Минут:',
'seconds'=>'Секунд:'
);
$lang['en']=array(
'open'=>'Open after:',
'days'=>'Days:',
'hours'=>'Hours:',
'minutes'=>'Minutes:',
'seconds'=>'Seconds:'
);
function lang($key) {
	if($key) {
		global $file,$lang;
		return $lang[$file][$key];
	}
	return false;
}
?>
<script type="text/javascript">
function timer() {
	var self=this,
	date=new Date('<?=$date?>'),
	new_date=new Date('<?=$new_date?>'),
	time=(new_date.getTime()-date.getTime()),
	secounds,
	last_secounds,
	days,
	last_days,
	hours,
	last_hours,
	minutes;
	if(1<time) {
		secounds=parseInt(time/1000);
		days=parseInt(secounds/(24*60*60));
		last_days=secounds-days*24*3600;
		hours=parseInt(last_days/3600);
		if(10>hours) {
			hours='0'+hours;
		}
		last_hours=last_days-hours*3600;
		minutes=(parseInt(last_hours/60));
		if(10>minutes) {
			minutes='0'+minutes;
		}
		last_secounds=last_hours-minutes*60;
		if(10>last_secounds) {
			last_secounds='0'+last_secounds;
		}
		id('days',days);
		id('hours',hours);
		id('minutes',minutes);
		id('secounds',last_secounds);
	}
}
function id(id,value) {
	value=value || '';
	if(value) {
		return document.getElementById(id).innerHTML=value;
	} else {
		return document.getElementById(id);
	}
}
timer();
</script>
<style type="text/css">
	#timers td{color:#f9ff00;}
</style>
<table id="timers">
	<tr id="timers">
		<td colspan="4">
			<?=lang('open')?>
		</td>
	</tr>
	<tr id="timers">
		<td>
			<?=lang('days')?>
		</td>
		<td>
			<?=lang('hours')?>
		</td>
		<td>
			<?=lang('minutes')?>
		</td>
		<td>
			<?=lang('seconds')?>
		</td>
	</tr>
	<tr id="timers">
		<td id="days"></td>
		<td id="hours"></td>
		<td id="minutes"></td>
		<td id="secounds"></td>
	</tr>
</table>
</div>




=)))))))


давно еще писал, не стану замарачиваться))))
Он мне не нужен)))
уже по другому давно делаю=))
Тут бы переписать)) по компактнее))

hoax 31.12.2012 11:12

Правильно ли я понимаю?

// ms - это общая разница времени в милисекундах

// общее число мс делим на 1 сек,1 мин, 1 час = часы.

var hour = ms/1000/60/60^0 ; 

//мс-часы = получаем остаточное кол-во мс, доводим их до часа (неполного чтоли), а далее опять делим и получаем - ???

var min = (ms-hour*1000*60*60)/1000/60^0 ;

//аналогично

var sec = (ms-hour*1000*60*60-min*1000*60)/1000^0 ;

Hekumok 31.12.2012 16:33

hoax,
var hour = ms/1000/60/60^0 ; // получаем часы
var min = (ms-hour*1000*60*60)/1000/60^0 ;
/* в скобочках из всего количества мс
вычитаем количество мс, содержащихся
в часах (hour), и получаем затем минуты */
var sec = (ms-hour*1000*60*60-min*1000*60)/1000^0 ; 
/* в скобочках делаем тоже самое, но еще вычитаем
и количество мс, содержащихся в минутах (min),
затем получаем секунды */


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