Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> таймер, отсчёт времени, проблемы с летним время 
:(
    Опции темы
ressac
Дата 3.2.2008, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 25.11.2006

Репутация: 1
Всего: 1



работает криво, например если выставить финальную дату до 30 Марта (включительно) то всё ОК, но как только ставлю 31 Марта или 1 Аперля то куда-то исчезает один Час....
и вот я думаю - это вероятно из за перехода на летнее время! и как быть теперь? smile ведь счётчик то в принципе правильно считает, но ещё в принципе не летнее время... 
тойсть хочу чтоб он отнимал тот самый час во время перехода , но ни как до него smile
Код

<html>
    <head>
    <title>
        r3554( Pr0du(t10n
    </title>
    <script language="JavaScript">

    one_day=1000*60*60*24;
    d1=new Date(2008,2,31);

    
    function timer()
    {
        d2=new Date();
        
        document.getElementById('week').innerHTML=
        Math.floor( (d1.getTime()-d2.getTime())/ (one_day*7));
        
        document.getElementById('days').innerHTML=
        Math.floor( (d1.getTime()-d2.getTime())/ one_day)%7;
        
        document.getElementById('hours').innerHTML=
        Math.floor( (d1.getTime()-d2.getTime())/ (one_day/24))%24;
        
        document.getElementById('min').innerHTML=
        Math.floor( (d1.getTime()-d2.getTime())/ (one_day/24/60))%60;
        
        document.getElementById('sec').innerHTML=
        Math.ceil( (d1.getTime()-d2.getTime())/ (one_day/24/60/60))%60;
        
        setTimeout("timer()",1000);
    }
    </script>

        <style type="text/css">
<!--
.tabClass {font-family: Verdana; font-size: 26px; height: 50%; width: 50%; text-align:center; color: #000000 }
.tdClass {color:#26ABAE; size: 30px}
-->
    </style>
</head>    
    <body onLoad="timer()">

    <table width="100%" height="100%" border="0"  >
  <tr>
    <td ><table border="0" class="tabClass" align="center">
        <tr>
          <td>semanas</td><td class="tdClass">[</td>
          <td><div id='week' style="color:#CC0000"></div></td><td class="tdClass">]</td>

          <td>.dias</td><td class="tdClass">[</td>
            <td><div id='days' style="color:#CC0000"></div></td><td class="tdClass">]</td>

          <td>.horas</td><td class="tdClass">[</td>
            <td><div id='hours' style="color:#CC0000"></div></td><td class="tdClass">]</td>

          <td>.minutas</td><td class="tdClass">[</td>
            <td><div id='min' style="color:#CC0000"></div></td><td class="tdClass">]</td>

          <td>.segundos</td><td class="tdClass">[</td>
            <td><div id='sec' style="color:#CC0000"></div></td><td class="tdClass">]</td>
        </tr>
</table>

</body>
</html>



Это сообщение отредактировал(а) ressac - 3.2.2008, 09:53
PM MAIL   Вверх
ressac
Дата 3.2.2008, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 25.11.2006

Репутация: 1
Всего: 1



тут появилась идея добавить ещё год и месяц, только не выходит... помощь? smile
PM MAIL   Вверх
ressac
Дата 3.2.2008, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 25.11.2006

Репутация: 1
Всего: 1



вот, написал smile

ещё раз прошу кого-то проверить алгоритм... плиз smile 

Код

<html>
    <head>
    <title>
        ressac
    </title>
    <script language="JavaScript">

    one_day=1000*60*60*24;
    d1=new Date(2008,3,1);
    n1=new Array(2);
    n2=new Array(2);

    function timer()
    {
        one=0;
        d2=new Date();
        d_act2=new Date(2008,(new Date()).getMonth(),(new Date()).getDate(),(new Date()).getHours());
        d_act1=new Date(2008,(new Date()).getMonth()+1,1);
        
        n2[0]=d2.getMonth()+1;
        n1[0]=d1.getMonth()+1;

        n2[1]=d2.getFullYear();
        n1[1]=d1.getFullYear();

        if( (n1[0]-=n2[0])<=0)
        {
            n1[0]+=12;
            one=1;
        }

        n1[1]-=(n2[1]+one);
        
        document.getElementById('year').innerHTML=n1[1];
        document.getElementById('month').innerHTML=n1[0]-1;


//*******************************************************        
        
        document.getElementById('week').innerHTML=
        Math.floor( (d_act1.getTime()-d_act2.getTime())/ (one_day)%31/7);
        
        document.getElementById('days').innerHTML=
        Math.floor( (d_act1.getTime()-d_act2.getTime())/ one_day)%7;

        
//*******************************************************        
        
        document.getElementById('hours').innerHTML=
        Math.floor( (d1.getTime()-d2.getTime())/ (one_day/24))%24;
        
        document.getElementById('min').innerHTML=
        Math.floor( (d1.getTime()-d2.getTime())/ (one_day/24/60))%60;
        
        document.getElementById('sec').innerHTML=
        Math.ceil( (d1.getTime()-d2.getTime())/ (one_day/24/60/60))%60;
        
//*******************************************************        

        setTimeout("timer()",1000);
    }
    </script>

        <style type="text/css">
<!--
.tabClass {font-family: Verdana; font-size: 26px; height: 50%; width: 50%; text-align:center; color: #000000}
.tdClass {color:#26ABAE; size: 30px}
-->
    </style>
</head>    
    <body onLoad="timer()">

    <table width="100%" height="100%" border="0"  >
  <tr>
    <td ><table border="0" class="tabClass" align="center">
        <tr>
           <td>años</td><td class="tdClass">[</td>
           <td><div id='year' style="color:#CC0000"></div></td><td class="tdClass">]</td>
           
          <td>.meses</td><td class="tdClass">[</td>
           <td><div id='month' style="color:#CC0000"></div></td><td class="tdClass">]</td>
        
          <td>.semanas</td><td class="tdClass">[</td>
           <td><div id='week' style="color:#CC0000"></div></td><td class="tdClass">]</td>
 
          <td>.dias</td><td class="tdClass">[</td>
            <td><div id='days' style="color:#CC0000"></div></td><td class="tdClass">]</td>

          <td>.horas</td><td class="tdClass">[</td>
            <td><div id='hours' style="color:#CC0000"></div></td><td class="tdClass">]</td>

          <td>.minutas</td><td class="tdClass">[</td>
            <td><div id='min' style="color:#CC0000"></div></td><td class="tdClass">]</td>

          <td>.segundos</td><td class="tdClass">[</td>
            <td><div id='sec' style="color:#CC0000"></div></td><td class="tdClass">]</td>
        </tr>
</table>

</body>
</html>


PM MAIL   Вверх
SelenIT
Дата 3.2.2008, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Цитата(ressac @  3.2.2008,  09:51 Найти цитируемый пост)
хочу чтоб он отнимал тот самый час во время перехода , но ни как до него

Не совсем понял формулировку задачи). Но как вариант - использовать методы getUTCЧто-то вместо просто getЧто-то.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
ksnk
Дата 3.2.2008, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Работает, неправильно... Код утверждает, что между 2008/1/3 21:18:00 и 2008/3/1 0:0:0
пройдет ... 1 час ... в то время как пройдет ... 2 ... ;) Видите ли, день перевода времени - это такой странный день, типа февраля, в нем 23 или 25 часов вместо 24-x. и работать с ним нужно столь-же загадочно как и с месяцами...



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
ressac
Дата 3.2.2008, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 25.11.2006

Репутация: 1
Всего: 1



ksnk, да, я об этом выше говорил,
так выходит из-за перехода не летнее время.

на самом деле показывает он точно, просто в момент перехода (30 марта) он два часа повторит,
попробуй выставить у себя 30 марта
PM MAIL   Вверх
ksnk
Дата 3.2.2008, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Ну что-ж тогда вот - правильный вариант 
Код

    function daydiff(date,date2){
        var needed={
             sec:'Seconds'
            ,min:'Minutes'
            ,hours:'Hours'
            ,days:'Date'
            ,month:'Month'
            ,year:'Year'
            ,week:0
        }

        function one_sel(d1,d2,val,sel){
            var get='get'+val,
                set='set'+val,
                _1=d1[get](),
                _2=d2[get]();
            if(_1<_2){
                d1[set](-1);
                _1+=d1[get]()+1;
            }
            return _1-_2;
        }
        
        window.daydiff=function (date,date2){
            var ret={}
            var d1=new Date(),
                d2=(date2 instanceof Date)?date2:new Date(date2);
            d1.setTime(date.getTime());    
            if(d1<d2) return null;
            for (var i in needed){
                if(i=='week'){
                    var t=ret.days;
                    ret.days=ret.days%7;
                    ret[i]=Math.floor(t/7);
                } else 
                    ret[i]=one_sel(d1,d2,needed[i]);
            }
            return ret;
        }
        return window.daydiff(date,date2)
    }
    
    function timer(date)
    {
        function _Timer(){
            var diff=daydiff(date,new Date());
            for (var i in diff){
                document.getElementById(i).innerHTML=diff[i]
            }
        }
        setInterval(_Timer,1000);
    }


Ну и вставлять его в код
Код

    <body onLoad="timer(new Date(2008,2,31))">

Кстати - перевод времени будет с 29 марта по 30...

Добавлено через 1 минуту и 37 секунд
Между 5 часов 29 марта и 6 часов 30 марта пройдет 1 день и 1 час smile

Добавлено через 4 минуты и 30 секунд
Хотя в день перевода дат я тоже заглючу... :(


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
SelenIT
Дата 3.2.2008, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Цитата(ksnk @  3.2.2008,  22:01 Найти цитируемый пост)
день перевода дат

Сорри, а это когда?


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
ksnk
Дата 3.2.2008, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



SelenIT,  Oops! Стормозил. Это день перевода часов на летнее время... smile


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
ressac
Дата 4.2.2008, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 25.11.2006

Репутация: 1
Всего: 1



ksnk, не понял ни принцип кода ни ход работы, у меня было на часах 22:00 , твой код вывел на экран "3" и всё ...

вот тут финальная версия smile надеюсь что финальная

ressac.110mb.com


единственный "ГЛЮК" это то что до перехода на летнее время день кончается на ЧАС раньше, так что как это решить [B]вопрос остаётся открытым smile[/B]

Это сообщение отредактировал(а) ressac - 4.2.2008, 00:11
PM MAIL   Вверх
ksnk
Дата 4.2.2008, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата(ressac @  4.2.2008,  00:10 Найти цитируемый пост)
у меня было на часах 22:00 , твой код вывел на экран "3" и всё ...

А здесь? Там еще табличка для проверки разности между датами... 6 строк таблицы вставляются в Date(1,2,3,4,5,6)...
Кстати, наши таймеры отличаются на час... ;-)

Добавлено @ 01:06
В добавок он не глючит при переходе на летнее время. Просто я проверял разницу между 2008/3/30:1 ночи, а время переводят с часа сразу на 2...

Это сообщение отредактировал(а) ksnk - 4.2.2008, 01:07


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
ksnk
Дата 4.2.2008, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата(ressac @  4.2.2008,  00:10 Найти цитируемый пост)
не понял ни принцип кода ни ход работы
 Принцип
функция daydiff: получает даты  d1 и d2.
Для каждой из них последовательно применяем функции getSeconds, getMinutes,... getYear
получаем на каждой итерации число _1 и _2. Если _1 меньше, чем _2, добавляем к _1 (d1.setXXX(-1)).getXXX()+1. В результате этой магии получаем 59+1 для секунд/минут и 29 дней для февраля этого года. В добавок этой-же магией автоматически учитываются "заемные" значение, к примеру разница 10:0 и 9:59 выдаст 0 и 59 секунд, после магии первая дата станет 9:59. Результат - 1 секунда...  На каждой итерации в результирующий объект сваливаем то, что получилось под соответствующим именем.

функция timer использует daydiff для размещения результатов ее работы в нужном месте.

Остальная магия служит для связки слов в предложении и для излишней оптимизации  smile

Добавлено через 2 минуты и 46 секунд
Кстати, если прислушаться к совету SelenIT, и указать "начальную" дату в GMT формате, то пользователи в Америке не будут удивлены странной датой начала мероприятия... ;-)


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
ressac
Дата 4.2.2008, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 25.11.2006

Репутация: 1
Всего: 1



Цитата(ksnk @  3.2.2008,  22:57 Найти цитируемый пост)
А здесь? Там еще табличка для проверки разности между датами

да тут видно всё хорошо smile

НО у тебя почему-то на один ДЕНЬ больше выходит, не считай тот день в котором Мы находимся сейчас. так как он ведь уже не полный ДЕНЬ...
плюс не понятки у тебя с вводом данных, тот что внизу показывает точно , а тот что в верху - не точно, например я выставил 30 марта и  он показал 0 дней.

Цитата(ksnk @  3.2.2008,  22:57 Найти цитируемый пост)
В добавок он не глючит при переходе на летнее время. Просто я проверял разницу между 2008/3/30:1 ночи, а время переводят с часа сразу на 2...


у меня разве глючит? у меня просто два раза один час прокручивает...

PM MAIL   Вверх
ksnk
Дата 4.2.2008, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Не понял ;)
вот тестовый замер
Код

Sun, 30 Mar 2008 00:00:00 GMT+0300
Thu, 03 Jan 2008 23:00:00 GMT+0300
sec:0 min:0 hours:1 days:5 month:2 year:0 week:3

к нижней дате прибавляем
+2 месяца = 03 марта
+3 + 3 недели*7 +5 дней=29 марта 
 + 1 час = 30 марта...
Где-то что-то неправильно считается?
Или на других датах чего-то неправильное?
Проще делать такие слепки Оперой, она позволяет из окна alert'а копировать...

Добавлено через 2 минуты и 5 секунд
Цитата(ressac @  4.2.2008,  19:30 Найти цитируемый пост)
плюс не понятки у тебя с вводом данных, тот что внизу показывает точно , а тот что в верху - не точно, например я выставил 30 марта и  он показал 0 дней.

Это непонятки, чего вводилось в каждое поле?

Добавлено через 4 минуты и 34 секунды
Цитата(ressac @  4.2.2008,  19:30 Найти цитируемый пост)
не считай тот день в котором Мы находимся сейчас. так как он ведь уже не полный ДЕНЬ...

Это как это, между 23:00 сегодня и 23:00 завтра пройдет 0 дней? smile


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
ressac
Дата 4.2.2008, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 25.11.2006

Репутация: 1
Всего: 1



Цитата(ksnk @  4.2.2008,  18:38 Найти цитируемый пост)
Это непонятки, чего вводилось в каждое поле?


30 марта 17:00 , и на локальных часах у себя туже дату ставил и был разный результат.


Цитата(ksnk @  4.2.2008,  18:38 Найти цитируемый пост)

Это как это, между 23:00 сегодня и 23:00 завтра пройдет 0 дней? smile 


нет пройдёт 1 день, но если 23:01 сегодня и завтра 23:00 то пройдёт уже 0 дней и 23:59 часа  smile))
PM MAIL   Вверх
ksnk
Дата 5.2.2008, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата(ressac @  4.2.2008,  21:18 Найти цитируемый пост)
но если 23:01 сегодня и завтра 23:00 то пройдёт уже 0 дней и 23:59 часа  

Код

Fri, 04 Apr 2008 00:00:00 GMT+0400
Thu, 03 Apr 2008 00:00:01 GMT+0400
sec:59 min:59 hours:23 days:0 month:0 year:0 week:0 

Как можно заметить - я совершенно с этим не спорю ;-)

Цитата(ressac @  4.2.2008,  21:18 Найти цитируемый пост)
30 марта 17:00 , и на локальных часах у себя туже дату ставил и был разный результат.

Цитата(ressac @  4.2.2008,  19:30 Найти цитируемый пост)
например я выставил 30 марта и  он показал 0 дней.

Правильно ли я понял, что 30 марта в 17:00 счетчик покажет, что осталось 0 дней++  до 31 марта 0:0? Почему это считается неправильным? smile

В общем - в странности работы счетчика я не убежден. Чего, казалось бы проще - скопировать тестовую пару дат и сказать что вот тут считается фигня-с. Почему бы это не сделать ;) Особенно, если учесть, что этот счетчик нужен, вообще говоря, совсем даже не мне  smile 



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
ressac
Дата 5.2.2008, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 25.11.2006

Репутация: 1
Всего: 1



.... вы не правильно меня поняли или я вас, это не важно даже уже, зачем ссорится smile

ну странности вот:

сейчас он показывает что осталось 3 недели и 6 дней(это по тому что через форму выдаёт), а на динамическом 3 недели и 5 дней - а на самом деле 3 недели и 4 дня

проблемы с февралём есть, например ставлю дату 29 февраля 2008 года и выдаёт что ещё 1 месяц и 2 дня, откуда два дня?

ещё видел проблемы...с неделями вроде...

вообщем я не придираюсь к твоему коду, ты меня не правильно понял. забудь

кстати в моём случае придумал решение что до 30 марта просто буду прибавлять час и всё smile а лучше наверно вообще перепишу по новой.. а то что-то толстый код вышел.


p.s. у нас разные часовые пояса, может быть по этому... хотя не думаю smile
PM MAIL   Вверх
ksnk
Дата 5.2.2008, 01:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата(ressac @  5.2.2008,  00:39 Найти цитируемый пост)
проблемы с февралём есть, например ставлю дату 29 февраля 2008 года и выдаёт что ещё 1 месяц и 2 дня, откуда два дня?

Угу... Теперь - убедительно ;-) Вот это - баг... будем ковырять.

Добавлено через 2 минуты и 11 секунд
C днями ничего более здравого пока не приходит в голову, кроме как прибавлять по одному, пока не станут равными... Хмм..ю Идея дурная, но сработает...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
ksnk
Дата 5.2.2008, 02:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Опять торможу... от 29 февраля до 29 марта - 1 месяц. До 31-го еще 2 дня... А в чем прикол? ладно спать пойду... smile


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
SelenIT
Дата 5.2.2008, 04:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Вот что-то подобное алгоритму ksnkа делали на PHP (кстати, там и обсуждение небесполезное;). Для "перевода" на JS, по идее, достаточно убрать "доллары" и заменить
Код

        $st = explode('-', date('d-m-Y-H-i-s', $date_start));
на
Код

        st =[date_start.getUTCDate(),
            date_start.getUTCMonth(),
            date_start.getUTCFullYear(),
            date_start.getUTCHours(),
            date_start.getUTCMinutes(),
            date_start.getUTCSeconds()];
(аналогично для fin - date_finish),
и
Код

            days = date('t', mktime(1, 0, 0, st[1], st[0], st[2])) - st[0] + fin[0];
на
Код

            days = new Date(st[2], st[1]+1, 0, 0, 0, 1).getUTCDate() - st[0] + fin[0];


А недели, имхо, можно "тупо" получить из дней как Math.floor(days/7), сами дни - соответственно как days%7...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
ksnk
Дата 5.2.2008, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



К сожалению, проверка алгоритма "отнимания столбиком" двух чисел с цифрами разных размерностей не выявила багов...
Возможно, часть "глюков" объясняется тем, что функция считала время до 1 апреля, а не до 30-го марта. Сейчас все даты выводятся на экран, так что если глюк будет виден - желательно его сюда скопировать и запостить. "Калькулятор" тоже выводит разницу дат на экран. При наличии глюка - буду рад его увидеть.

Добавлено @ 12:29
SelenIT, В принципе, там делается то-же самое, просто "а мужики-то не знали", что если поставить -1 в соответствующий параметр даты - появится "максимальное" этого параметра значение. Так что им пришлось помнить все параметры минут и часов, а мне - вот - нет smile  ... 

Это сообщение отредактировал(а) ksnk - 5.2.2008, 12:40


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
ressac
Дата 5.2.2008, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 25.11.2006

Репутация: 1
Всего: 1



1st time: Tue Apr 01 2008 00:00:00 GMT+0200
2 nd time:Sun Mar 23 2008 23:44:00 GMT+0100
sec:0 min:16 hours:23 days:0 month:0 year:0 weeks:1

ну так теперь  у тебя тоже самое что и у меня.. на час раньше smile

Добавлено через 1 минуту и 48 секунд
1st time: Tue Apr 01 2008 00:00:00 GMT+0200
2 nd time:Sun Mar 23 2008 22:44:00 GMT+0100
sec:0 min:16 hours:0 days:1 month:0 year:0 weeks:1
PM MAIL   Вверх
ksnk
Дата 5.2.2008, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Объяснение странному пропаданию одного часа я , вроде отыскал, хотя объяснение шаманское... Я использовал функции UTCxxx, по наводке Selenit'а. Когда вернул на локализованные - час нашелся...

Добавлено через 1 минуту
Нешаманское объяснения сему странному факту пока не отыскалось...

Добавлено через 6 минут и 19 секунд
нашлось... Дневное время - GMT+4 для моего пояса, зимнее - GMT +3, а UTC - это GMT+0, так что час отнимался "законно" ;-)... с точки зрения гринвичского меридиана...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
ressac
Дата 11.2.2008, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 25.11.2006

Репутация: 1
Всего: 1



ksnk, привет
только что делал этот-же сабж только на PHP

зашёл сверить время с твоим и вышло у тебя следущее....

1st time: Tue Apr 01 2008 00:00:00 GMT+0200
2 nd time:Mon Feb 11 2008 23:00:00 GMT+0100
sec:0 min:0 hours:1 days:6 month:1 year:0 weeks:2

у меня получается 
лет 0 мес. 1 нед. 2 дни 4 часы 1


...
хз, может что-то я спутал как всегда... перепроверь свой. 
два дня меньше должно быть
PM MAIL   Вверх
ksnk
Дата 12.2.2008, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Через 2 недели от 11-го февраля будет 25-е, через месяц - 25-е марта, еще через 6 дней (31 день в марте ;-) ) будет 1 апреля

Добавлено через 3 минуты и 23 секунды
Хотя, с какого месяца считать?... Это вопрос...

Добавлено через 5 минут и 16 секунд
Я от 1 апреля отнимаю 11 февраля, вот и получается такая разница... Нужно бы чего-то другое делать...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
ksnk
Дата 12.2.2008, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Угу! Я тормоз...  smile 
сейчас и у меня от 11 марта до 1 апреля 1 месяц, 2 недели и 4 дня...
Сейчас, надеюсь, правильно!  smile 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1760 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.