Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 26.09.2010, 10:06
Новичок на форуме
Отправить личное сообщение для mrspd Посмотреть профиль Найти все сообщения от mrspd
 
Регистрация: 26.09.2010
Сообщений: 2

Вас всех тут на говнокод можно отправить смело. Если таймер, так и работать надо со временем!

var timer = new Object();
timer.get = function (year,month,day,hour,minute,second,msecond){
    
    var finish_time = new Date(year,month-1,day,hour,minute,second,msecond);    
    var start_time     = new Date();
    var diff = Math.round((finish_time.getTime() - start_time.getTime())/1000);
        
    timer.seconds     = diff % 60;
    timer.minutes     = Math.floor((diff/60) % 60);
    timer.hours       = Math.floor((diff/3600) % 24);
    timer.days       = Math.floor(diff/3600/24);
    
    console.log('Дней: '+timer.days+' - Часов: '+timer.hours+' - Минут:'+timer.minutes+' - Секунд:'+timer.seconds);
    setTimeout(function ()
    {
        timer.get(year,month,day,hour,minute,second,msecond);
    },1000);
}

// До конца света осталось
timer.get(2012,1,1,0,0,0,0);
Ответить с цитированием
  #12 (permalink)  
Старый 26.09.2010, 11:13
Профессор
Отправить личное сообщение для with-love-from-siberia Посмотреть профиль Найти все сообщения от with-love-from-siberia
 
Регистрация: 14.12.2009
Сообщений: 155

mrspd, не умничайте. Ваш пример, по сути, - модификация алгоритма, словесно описанного вот этой строкой
Сообщение от with-love-from-siberia
Сложить все, вычесть единицу и снова расложить по отдельным элементам
. Проблема в том, что некоторое начальное значение может формироваться на стороне сервера. Естественно, что должно быть создана переменная типа Date, а потом с ней уже работать. Но в данном случае, с моей стороны, желательно дать подсказки, чтобы вопрошающий додумался до решения сам (что к сожалению, не произошло).
Ответить с цитированием
  #13 (permalink)  
Старый 26.09.2010, 11:20
Новичок на форуме
Отправить личное сообщение для mrspd Посмотреть профиль Найти все сообщения от mrspd
 
Регистрация: 26.09.2010
Сообщений: 2

Создать конструкцию из множества условий по праву просто нельзя назвать правильным кодом.

Кто вам мешает брать начальные значения с сервера?

Мой пример показывает как это можно вписать в 20 строк, при этом заметьте, там нет не одного условия. А с вашими ifswitchelse'овыми конструкциями, чёрт ногу сломит...

Помимо этого код более читабелен, даже без комментариев. Даже если вы свои if конструкции откомментируете, у вас в совокупности комментариев получится больше, чем у меня кода
Ответить с цитированием
  #14 (permalink)  
Старый 26.09.2010, 11:32
Профессор
Отправить личное сообщение для with-love-from-siberia Посмотреть профиль Найти все сообщения от with-love-from-siberia
 
Регистрация: 14.12.2009
Сообщений: 155

mrspd, Я с Вами полностью согласен, что работу таймера лучше реализовать с переменными типа Date. Но так уж сложилось, что у автора данной темы данные уже сформированы и необходимо работать с ними. Хотя, он мог бы изменить (полагаю, что мог бы) свой алгоритм на сервере, чтобы временнАя переменная формировалась на сервере, а клиентская часть уже работала в ней.

Посмотрите внимательно, я давал две подсказки, одна из них предлагает работать с целочисленным представлением времени. Именно это я имею в виду, говоря, что Ваш алгоритм - есть модификация моего словесного описания. Но есть отличия: Вы предлагаете вычислять разницу между началом и концом, я предлагаю вычитать единицу из уже существующей разницы. Однако, автору желается работать раздельно с каждой составляющей времени.

Можно, с определенной натяжкой, это рассматривать как третий вариант. К сожалению, автор темы не смог близко подойти ни к одному из предложенных решений.
Ответить с цитированием
  #15 (permalink)  
Старый 26.09.2010, 18:22
Новичок на форуме
Отправить личное сообщение для t0xas Посмотреть профиль Найти все сообщения от t0xas
 
Регистрация: 10.08.2009
Сообщений: 7

Братья мир, я понял свои ошибки, драться не надо.
да принижать достоинство других не стоит, чтобы возвысить свое.
Всем спасибо. Я учусь и рад вашим подсказкам.
Ответить с цитированием
Ответ



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

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