Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.02.2013, 19:37
Новичок на форуме
Отправить личное сообщение для Woldor Посмотреть профиль Найти все сообщения от Woldor
 
Регистрация: 26.02.2013
Сообщений: 6

Нужен таймер
Нужен таймар для сайта который будет одщитавать время до 7:00 затем до 15:00 и до 23:00 и снова 7:00 по московськом времени.
Зараня очень признательный за помощь.
Ответить с цитированием
  #2 (permalink)  
Старый 26.02.2013, 23:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Woldor, таймер по местному времени

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
  <title></title>
</head>
<body><div id = 'show'></div>
<script type="text/javascript">
function two(a) {
    return (9 < a ? "" : "0") + a
}
function formatTime(a) {
    a = Math.floor(a / 1E3);
    var c = Math.floor(a / 60),
        d = Math.floor(c / 60);
    a %= 60;
    c %= 60;
    return two(d) + " : " + two(c) + " : " + two(a)
}
function Time() {
    var a = new Date, c = [7, 15, 23, 7], d = [], e = a.getDate() + 1, b = 0;
    for (; b < c.length; b++)
    a.setHours(c[b], 0, 0, 0),
    3 == b && a.setDate(e),
    d[b] = a.getTime();
    for (b = 0; b < c.length && !(a = d[b] - (new Date).getTime(), 0 < a); b++);
    document.getElementById("show").innerHTML = "До " + c[b] + " осталось " + formatTime(a);
    window.setTimeout(Time, 1E3)
};
Time()
</script>
</body>
</html>

Последний раз редактировалось рони, 26.02.2013 в 23:32.
Ответить с цитированием
  #3 (permalink)  
Старый 26.02.2013, 23:52
Новичок на форуме
Отправить личное сообщение для Woldor Посмотреть профиль Найти все сообщения от Woldor
 
Регистрация: 26.02.2013
Сообщений: 6

а под московское время подогнать можна а то эта имеет бальшое значения
Ответить с цитированием
  #4 (permalink)  
Старый 27.02.2013, 00:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Woldor
под московское время подогнать можна
можно если брать время с сервера но это отдельная тема для раздела работа.
Ответить с цитированием
  #5 (permalink)  
Старый 27.02.2013, 01:55
Новичок на форуме
Отправить личное сообщение для Woldor Посмотреть профиль Найти все сообщения от Woldor
 
Регистрация: 26.02.2013
Сообщений: 6

а что отвичает за поточное время
Ответить с цитированием
  #6 (permalink)  
Старый 27.02.2013, 04:11
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от рони
можно если брать время с сервера но это отдельная тема для раздела работа.
Да пофег имхо - берешь по гринвичу http://javascript.ru/Date.UTC и добавляшь смещение москвы
Ответить с цитированием
  #7 (permalink)  
Старый 27.02.2013, 11:38
Аватар для ОлегА
Профессор
Отправить личное сообщение для ОлегА Посмотреть профиль Найти все сообщения от ОлегА
 
Регистрация: 25.08.2011
Сообщений: 420

вот моё изобретение, не много корявое, но работает, 1-ым параметром подаешь 1-ую дату до которой надо отсчитать, далее 2-ым параметром в массиве подаем, другие даты, после 1-ой, повторяюсь код сырой, можно упростить, просто лень, рабоатет и ладно=)
function timer( objname, mysqldate, attr, b_next ){
        //var y, m, d, h=0, i=0, s=0;
        h=0; i=0; s=0;
        comment_start = attr.start!=undefined ? attr.start : '';
        comment_end   = attr.end  !=undefined ? attr.end   : mysqldate+' - эта дата уже прошла!';
        
        if( ymd = /^(\d\d\d\d)-(\d\d)-(\d\d)/.exec(mysqldate) ){
            y = ymd[1];
            m = Number(ymd[2])-1;
            d = ymd[3];        
            //alert('y=>'+y+' m=>'+m+' d=>'+d);
            if( his = /(\d\d):(\d\d):(\d\d)$/.exec(mysqldate) ){
                h = his[1];
                i = his[2];
                s = his[3];
                //alert('h=>'+h+' i=>'+i+' s=>'+s);
            }
        } else {
            $( objname ).text(mysqldate+ '- не соответствует формату YYYY-MM-DD [H:i:s]');
            return;
        }
        
        finishday = new Date( y, m, d, h, i, s );    
        endTS = finishday.getTime();
            
        var intervalid = setInterval(function(){
            now = new Date();
            totalRemains = (endTS - now.getTime());                        
            if (totalRemains>1){
                RemainsSec=(parseInt(totalRemains/1000));
                RemainsFullDays=(parseInt(RemainsSec/(24*60*60)));            
                secInLastDay=RemainsSec-RemainsFullDays*24*3600;
                RemainsFullHours=(parseInt(secInLastDay/3600));
                if (RemainsFullHours<10){RemainsFullHours="0"+RemainsFullHours};
                secInLastHour=secInLastDay-RemainsFullHours*3600;
                RemainsMinutes=(parseInt(secInLastHour/60));
                if (RemainsMinutes<10){RemainsMinutes="0"+RemainsMinutes};                        
                lastSec=secInLastHour-RemainsMinutes*60;                            
                if (lastSec<10){lastSec="0"+lastSec};                
                $( objname ).html( comment_start + (RemainsFullDays ? "<span>"+RemainsFullDays+"дн.</span> " :"")+RemainsFullHours+"ч. "+RemainsMinutes+"м. "+lastSec+"с.");
            } else {
               clearInterval(intervalid); 
               
               if(b_next && typeof b_next==='object'){
                   next = b_next[3]!=undefined ? b_next[3] : '';
                   timer(b_next[0], b_next[1], b_next[2], next); 
               } else {
                   $( objname ).text( comment_end );
               }
            }
        },1000);
    }
         
    timer(
        '.timer', "<?php echo date('Y-m-d 12:00:00');?>", {start: 'До обеда осталось: '},[
            '.timer', "<?php echo date('Y-m-d 13:15:00');?>", {start: 'Все бежим на ОБЕД! До конца обеда осталось: '},[
                '.timer', "<?php echo date('Y-m-d 17:00:00');?>", {start: 'До конца рабочего дня осталось: ', end: 'Всё, хорош работать, бегите домой!'}
            ]
        ]
    );
Ответить с цитированием
  #8 (permalink)  
Старый 27.02.2013, 12:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Deff
Да пофег имхо
точное время и таймзону без сервера на компьюторе взять неоткуда, при условии что время и зона на компе выставлены правильно из-за смены зимнего/летнего если она есть, таймзону в скрипте придётся два раза в год корректировать. устанвливать дату в формат UTC нет необходимости, достаточно знать разницу между местной таймзоной и московской.
Вариант таймера с коррекцией на московское время...
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
  <title></title>
</head>
<body><div id = 'show'></div>
<script type="text/javascript">
function two(a) {
    return (9 < a ? "" : "0") + a
}
function formatTime(a) {
    a = Math.floor(a / 1E3);
    var c = Math.floor(a / 60),
        d = Math.floor(c / 60);
    a %= 60;
    c %= 60;
    return two(d) + " : " + two(c) + " : " + two(a)
}
function Time() {
    var a = new Date, c = [7, 15, 23, 7], d = [], e = a.getDate() + 1, b = 0, m = -240 - a.getTimezoneOffset();
    for (; b < c.length; b++)
    a.setHours(c[b], m, 0, 0),
    3 == b && a.setDate(e),
    d[b] = a.getTime();
    for (b = 0; b < c.length && !(a = d[b] - (new Date).getTime(), 0 < a); b++);
    document.getElementById("show").innerHTML = "До " + c[b] + " : 00 по Москве осталось " + formatTime(a);
    window.setTimeout(Time, 1E3)
};
Time()
</script>
</body>
</html>

правильность работы скрипта проверьте кому нетрудно с немосковским временем.

Последний раз редактировалось рони, 27.02.2013 в 12:45.
Ответить с цитированием
  #9 (permalink)  
Старый 28.02.2013, 04:01
Новичок на форуме
Отправить личное сообщение для Woldor Посмотреть профиль Найти все сообщения от Woldor
 
Регистрация: 26.02.2013
Сообщений: 6

работает идеально большое спасибо
еще пожалуйста отметь места которое нужно изменить при переходе на летнее время
Ответить с цитированием
  #10 (permalink)  
Старый 28.02.2013, 08:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Woldor
нужно изменить
значение выдаст алерт
var a = new Date;
alert(a.getTimezoneOffset())
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зацикленный таймер jacko Общие вопросы Javascript 2 01.07.2012 14:32
Таймер обратного отсчёта на .hta bk99 Internet Explorer 24 04.06.2012 19:46
Как сделать таймер как в САР? jelome Элементы интерфейса 0 27.06.2011 12:40
Таймер для слайдера (jQuery) RamPi Events/DOM/Window 0 23.05.2011 14:52
Как два раза вставить таймер alexvost Общие вопросы Javascript 2 08.02.2011 02:28