Помогите доделать таймер
Всем привет!
Не могу додумать, как сделать отсчет времени, вот что получилось 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, время: 07:20. |