Таймер отсчета времени

Рейтинг: 0Ответов: 2Опубликовано: 22.06.2011

Здравствуйте!

Задавал недавно вопрос по поводу таймера отсчета времени. Ответа не получил и сам решения не нашел, поэтому все переделал (мне помогли) и решил выводить только секунды, минуты, часы и дни с момента запуска таймера. Теперь мой таймер работает и выводит время с момента запуска в таком виде:

125д.
12.14.25

function clock_update (ss) {
    date1 = new Date ();
    date2 = new Date (ss);

    diff  = new Date();

    diff.setTime (date1.getTime() - ss*1000);

    timediff = diff.getTime();

    days = Math.floor(timediff / (1000 * 3600 * 24));
    timediff -= days * (1000 * 3600 * 24);

    hours = Math.floor(timediff / (1000 * 3600)); 
    timediff -= hours * (1000 * 3600);

    minutes = Math.floor(timediff / (1000 * 60)); 
    timediff -= minutes * (1000 * 60);

    seconds = Math.floor(timediff / 1000);
    timediff -= seconds * 1000;

    if (hours < 10)  hours = '0' + hours;
    if (minutes < 10)  minutes = '0' + minutes;
    if (seconds < 10)  seconds = '0' + seconds;

    document.getElementById ('times').innerHTML = '';
    if (days>0) document.getElementById ('times').innerHTML += days + ' д.<br>';
        document.getElementById ('times').innerHTML += hours + ':' + minutes + ':' + seconds + '';
}

Подскажите, пожалуйста, как сделать так, чтобы одновременно отображалась и дата запуска таймера в виде:

22.06.11
17.18.03

Ответы

▲ 2

Используйте strftime:

var d = new Date();

var dmy = d.strftime('%d.%m.%y');
var hms = d.strftime('%H.%M.%S');

или date.js:

var d = new Date();

var dmy = d.toString('dd/mm/yy');
var hms = d.toString('hh/mm/ss');

или еще что-нибудь.

▲ 1
<?php $started = 1308816638; // 1308816638 берется из БД?>
<div id="started"><?php echo date('d.m.y H:i:s', $started);?></div>
<div id="ticked"></div>

<script type="text/javascript">
function addZeros(n,x){n=n.toString();while(n.length<x)n='0'+n;return n;}
var diff = <?php echo time()-$started;?>;
function tick_started(id, diff)
{
    var sdiff = diff;
    var days = Math.floor(diff / 86400);diff -= days * 86400;
    var hours = Math.floor(diff / 3600);diff -= hours * 3600;
    var mins = Math.floor(diff / 60);diff -= mins * 60;
    document.getElementById(id).innerHTML = days+'д. '+addZeros(hours,2)+':'+addZeros(mins,2)+':'+addZeros(diff,2);
    setTimeout(function(){tick_started(id, sdiff+1);}, 1000);
}
tick_started('ticked', diff);
</script>

В БД дата старта хранится в виде int. Если надо, можно продублировать код вывода разницы на php, на случай, если js отключен.