![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
ressac |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 25.11.2006 Репутация: 1 Всего: 1 |
работает криво, например если выставить финальную дату до 30 Марта (включительно) то всё ОК, но как только ставлю 31 Марта или 1 Аперля то куда-то исчезает один Час....
и вот я думаю - это вероятно из за перехода на летнее время! и как быть теперь? ![]() тойсть хочу чтоб он отнимал тот самый час во время перехода , но ни как до него ![]()
Это сообщение отредактировал(а) ressac - 3.2.2008, 09:53 |
|||
|
||||
ressac |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 25.11.2006 Репутация: 1 Всего: 1 |
тут появилась идея добавить ещё год и месяц, только не выходит... помощь?
![]() |
|||
|
||||
ressac |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 25.11.2006 Репутация: 1 Всего: 1 |
вот, написал
![]() ещё раз прошу кого-то проверить алгоритм... плиз ![]()
|
|||
|
||||
SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
Не совсем понял формулировку задачи). Но как вариант - использовать методы getUTCЧто-то вместо просто getЧто-то. -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Работает, неправильно... Код утверждает, что между 2008/1/3 21:18:00 и 2008/3/1 0:0:0
пройдет ... 1 час ... в то время как пройдет ... 2 ... ;) Видите ли, день перевода времени - это такой странный день, типа февраля, в нем 23 или 25 часов вместо 24-x. и работать с ним нужно столь-же загадочно как и с месяцами... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
ressac |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 25.11.2006 Репутация: 1 Всего: 1 |
ksnk, да, я об этом выше говорил,
так выходит из-за перехода не летнее время. на самом деле показывает он точно, просто в момент перехода (30 марта) он два часа повторит, попробуй выставить у себя 30 марта |
|||
|
||||
ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Ну что-ж тогда вот - правильный вариант
Ну и вставлять его в код
Кстати - перевод времени будет с 29 марта по 30... Добавлено через 1 минуту и 37 секунд Между 5 часов 29 марта и 6 часов 30 марта пройдет 1 день и 1 час ![]() Добавлено через 4 минуты и 30 секунд Хотя в день перевода дат я тоже заглючу... :( -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
||||
|
|||||
SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
SelenIT, Oops! Стормозил. Это день перевода часов на летнее время...
![]() -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
ressac |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 25.11.2006 Репутация: 1 Всего: 1 |
ksnk, не понял ни принцип кода ни ход работы, у меня было на часах 22:00 , твой код вывел на экран "3" и всё ...
вот тут финальная версия ![]() ressac.110mb.com единственный "ГЛЮК" это то что до перехода на летнее время день кончается на ЧАС раньше, так что как это решить [B]вопрос остаётся открытым ![]() Это сообщение отредактировал(а) ressac - 4.2.2008, 00:11 |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
А здесь? Там еще табличка для проверки разности между датами... 6 строк таблицы вставляются в Date(1,2,3,4,5,6)... Кстати, наши таймеры отличаются на час... ;-) Добавлено @ 01:06 В добавок он не глючит при переходе на летнее время. Просто я проверял разницу между 2008/3/30:1 ночи, а время переводят с часа сразу на 2... Это сообщение отредактировал(а) ksnk - 4.2.2008, 01:07 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Принцип
функция 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 для размещения результатов ее работы в нужном месте. Остальная магия служит для связки слов в предложении и для излишней оптимизации ![]() Добавлено через 2 минуты и 46 секунд Кстати, если прислушаться к совету SelenIT, и указать "начальную" дату в GMT формате, то пользователи в Америке не будут удивлены странной датой начала мероприятия... ;-) -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
ressac |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 25.11.2006 Репутация: 1 Всего: 1 |
да тут видно всё хорошо ![]() НО у тебя почему-то на один ДЕНЬ больше выходит, не считай тот день в котором Мы находимся сейчас. так как он ведь уже не полный ДЕНЬ... плюс не понятки у тебя с вводом данных, тот что внизу показывает точно , а тот что в верху - не точно, например я выставил 30 марта и он показал 0 дней.
у меня разве глючит? у меня просто два раза один час прокручивает... |
|||
|
||||
ksnk |
|
||||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Не понял ;)
вот тестовый замер
к нижней дате прибавляем +2 месяца = 03 марта +3 + 3 недели*7 +5 дней=29 марта + 1 час = 30 марта... Где-то что-то неправильно считается? Или на других датах чего-то неправильное? Проще делать такие слепки Оперой, она позволяет из окна alert'а копировать... Добавлено через 2 минуты и 5 секунд
Это непонятки, чего вводилось в каждое поле? Добавлено через 4 минуты и 34 секунды
Это как это, между 23:00 сегодня и 23:00 завтра пройдет 0 дней? ![]() -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
||||||
|
|||||||
ressac |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 25.11.2006 Репутация: 1 Всего: 1 |
||||
|
||||
ksnk |
|
||||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Как можно заметить - я совершенно с этим не спорю ;-)
Правильно ли я понял, что 30 марта в 17:00 счетчик покажет, что осталось 0 дней++ до 31 марта 0:0? Почему это считается неправильным? ![]() В общем - в странности работы счетчика я не убежден. Чего, казалось бы проще - скопировать тестовую пару дат и сказать что вот тут считается фигня-с. Почему бы это не сделать ;) Особенно, если учесть, что этот счетчик нужен, вообще говоря, совсем даже не мне ![]() -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
||||||
|
|||||||
ressac |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 25.11.2006 Репутация: 1 Всего: 1 |
.... вы не правильно меня поняли или я вас, это не важно даже уже, зачем ссорится
![]() ну странности вот: сейчас он показывает что осталось 3 недели и 6 дней(это по тому что через форму выдаёт), а на динамическом 3 недели и 5 дней - а на самом деле 3 недели и 4 дня проблемы с февралём есть, например ставлю дату 29 февраля 2008 года и выдаёт что ещё 1 месяц и 2 дня, откуда два дня? ещё видел проблемы...с неделями вроде... вообщем я не придираюсь к твоему коду, ты меня не правильно понял. забудь кстати в моём случае придумал решение что до 30 марта просто буду прибавлять час и всё ![]() p.s. у нас разные часовые пояса, может быть по этому... хотя не думаю ![]() |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Угу... Теперь - убедительно ;-) Вот это - баг... будем ковырять. Добавлено через 2 минуты и 11 секунд C днями ничего более здравого пока не приходит в голову, кроме как прибавлять по одному, пока не станут равными... Хмм..ю Идея дурная, но сработает... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Опять торможу... от 29 февраля до 29 марта - 1 месяц. До 31-го еще 2 дня... А в чем прикол? ладно спать пойду...
![]() -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
SelenIT |
|
||||||||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
Вот что-то подобное алгоритму ksnkа делали на PHP (кстати, там и обсуждение небесполезное;). Для "перевода" на JS, по идее, достаточно убрать "доллары" и заменить
и
А недели, имхо, можно "тупо" получить из дней как Math.floor(days/7), сами дни - соответственно как days%7... -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
||||||||
|
|||||||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
К сожалению, проверка алгоритма "отнимания столбиком" двух чисел с цифрами разных размерностей не выявила багов...
Возможно, часть "глюков" объясняется тем, что функция считала время до 1 апреля, а не до 30-го марта. Сейчас все даты выводятся на экран, так что если глюк будет виден - желательно его сюда скопировать и запостить. "Калькулятор" тоже выводит разницу дат на экран. При наличии глюка - буду рад его увидеть. Добавлено @ 12:29 SelenIT, В принципе, там делается то-же самое, просто "а мужики-то не знали", что если поставить -1 в соответствующий параметр даты - появится "максимальное" этого параметра значение. Так что им пришлось помнить все параметры минут и часов, а мне - вот - нет ![]() Это сообщение отредактировал(а) ksnk - 5.2.2008, 12:40 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
ressac |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 ну так теперь у тебя тоже самое что и у меня.. на час раньше ![]() Добавлено через 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 |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Объяснение странному пропаданию одного часа я , вроде отыскал, хотя объяснение шаманское... Я использовал функции UTCxxx, по наводке Selenit'а. Когда вернул на локализованные - час нашелся...
Добавлено через 1 минуту Нешаманское объяснения сему странному факту пока не отыскалось... Добавлено через 6 минут и 19 секунд нашлось... Дневное время - GMT+4 для моего пояса, зимнее - GMT +3, а UTC - это GMT+0, так что час отнимался "законно" ;-)... с точки зрения гринвичского меридиана... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
ressac |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 ... хз, может что-то я спутал как всегда... перепроверь свой. два дня меньше должно быть |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Через 2 недели от 11-го февраля будет 25-е, через месяц - 25-е марта, еще через 6 дней (31 день в марте ;-) ) будет 1 апреля
Добавлено через 3 минуты и 23 секунды Хотя, с какого месяца считать?... Это вопрос... Добавлено через 5 минут и 16 секунд Я от 1 апреля отнимаю 11 февраля, вот и получается такая разница... Нужно бы чего-то другое делать... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Угу! Я тормоз...
![]() сейчас и у меня от 11 марта до 1 апреля 1 месяц, 2 недели и 4 дня... Сейчас, надеюсь, правильно! ![]() -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |