Помогите доделать таймер
Всем привет!
Не могу додумать, как сделать отсчет времени, вот что получилось
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)
Если просто ВЫЧЕСТЬ нужное время - текущенн = получится черт знает что, помоги ребят, если можно в этой функции |
есть мнения?
|
Пойдет?
<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>
|
Что мы делаем в данный строке объясните поподробнее плиз)
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 ; |
hoax, получаем часы, минуты и секунды :) если вас смущает ^0 - так это просто округление числа
|
Да мне интересно, почему идет умножение/деление именно на 1000, 60, 60?:)
|
справедливо:-E
|
<?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>
=))))))) давно еще писал, не стану замарачиваться)))) Он мне не нужен))) уже по другому давно делаю=)) Тут бы переписать)) по компактнее)) |
Правильно ли я понимаю?
// 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 ; |
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, время: 18:01. |