![]() |
часы, переход на летнее время
Подскажите как в этот коде сделать чтобы часы автоматически переходили на летнее и зимнее время
Код:
onClipEvent (enterFrame) { |
Flash приложение берет время с клиента, на котором запущено.
Каждый раз вызывая currentTime = new Date(); мы получаем значение системного времени ПК пользователя. А как правило у него стоит автоматический переход на лентее время. Можете почитать здесь и использовать указанный по ссылке алгоритм для определения летнего/зимнего времени: http://ru.wikipedia.org/wiki/Летнее_время |
в данном случае время берется несовсем с клента, а считается от гринвича, это нужно что бы в любом часов поясе флеш показывал точное московское время.
Но здесь не учитывается переход на летнее и зимнее время. Как сделать это в данном случае? |
currentTime.getUTCHours()+3; - это зимнее, +4 - летнее
смотрите даты (по Гринвичу) и выбираете нужное прибавление. NB Часовой пояс у нас +2, но есть декретное время +1 и еще летнее время +1 |
это я знаю сколько прибавлять нужно.
как сделать чтобы они сами в нужное время менялись как на компе |
Так после того как вы определите правильное прибавление (3 или 4) по дате, они (часы) сами и поменяются на компе.
В чем проблема-то? |
считается от гринвича, это время постоянное, оно вычисляется из времени установленного на компе путем вычитания или прибавление часового пояса.
Смена сезонного времени происходит только если поставленна галочка в настройках часах на компе, но при этом гринвич не меняется. |
Ну и в чем проблема-то? Гринвич-то всегда правильно показывает. Поставлена галочка или нет. От Гринвича и пляшите.
Единственный вариант ошибки - пользователь неустановил галочку перехода времени (т.е. пользуется зимним временем) и самостоятельно привел системное время к текущему (летнему). Но это ошибка пользователя и он прочувствует ее зимой. |
проблема как сделать чтобы мои флешевые часы автоматически переходили на летнее время!!!
|
Цитата:
Код:
dateWinter = new Date (2000, 0); |
Цитата:
Цитата:
собственно это я и указывал выше, как определение прибавления к Гринвичу, но nur говорит, что проблема не с этим... :) |
Вложений: 1
во вложении часы с приведенным мной кодом.
chingachgoog, можно убедиться что сами часы не переходят на летнее время!!! :rtfm: а каждые пол года менять флешку на сайте, это не вполне нормально :mad: |
Цитата:
|
chingachgoog, если нет конкретного решения проблемы, большая просьба не засорять тему ненужным флудом!!!
|
Цитата:
|
Цитата:
Местное время для Москвы= Гринвич + часовой пояс (2) + декретное время (+1) + сезонное (+1 летом) Флеш знает только смещение между системным временем и Гринвичем. Цитата:
Поэтому есть две ситуации когда часы по Москве работать не будут: 1) вы неправильно посчитали прибавление к Гринвичу (iNils вам тут даже даты дал) 2) комп пользователя настроен неверно Со вторым вариантом придется смириться - может у пользователя вообще часы системы даже с местным временем не связаны никак :) add: Зачем вы тут пример повторили, где тупо вбито зимнее время (+3)? Вы же сказали, что знаете как прибавление к Гринвичу рассчитывать? add2: Даю подсказку. Прибавление к Гринвичу надо рассчитывать динамически, а не статически. |
Цитата:
|
Цитата:
Я говорил, что часовой пояс в Москве +2, а не +3. Смещение getTimezoneOffset не подойдет в следующем случае: у пользователя верное время по Гринвичу, но не установлена галка о летнем времени (т.е. его комп показывает летом на час меньше) |
Цитата:
Код:
dateWinter = new Date (2000, 0); |
Цитата:
1) знать время по Гринвичу - а это как раз и высчитывается автоматически - кроме случая который я оговорил. 2) рассчитать по дате (день/месяц) смещение для Москвы от Гринвича (т.е. что прибавляем? 3 или 4?) |
Да хоть на северном полюсе.
Гринвич знаем? Знаем. Пояс Москвы (ну хорошо, пояс + декретно) знаем? Знаем. Что нужно узнать? Стоит ли галка учитывать переход не летнее или нет. Вот об этом и есть мой пост. |
Цитата:
Поэтому придется использовать мой алгоритм. И второе. Про ошибку. Ваш алгоритм не сработает, если человек установил комп правильно зимой, но не поставил галку (сейчас летом он у него показывает на один час меньше). А способ указанный мной покажет верное время для Москвы и в этом случае. |
Цитата:
Цитата:
|
Цитата:
Или еще вариант. В стране пользователя вообще нет летнего времени. Цитата:
|
Код:
Вот ситуация. В стране пользователя время УЖЕ летнее. А в Москве ЕЩЕ нет. Ваш алгоритм покажет ЛЕТНЕЕ московское время, тогда как на самом деле там зимнее. Или еще вариант. В стране пользователя вообще нет летнего времени.Код:
И что же тут сработало? Результат показывает, что у пользователя время сходно с зимним, не более того. Включена галка или нет - нам по-прежнему неизвестно.Что с в промежуток с последнго воскресенье октября по последнее воскресенье марта, getTimezoneOffset () для текущего дня и 1 января выдаст нам один и тот же результат. А с последнего воскресенье марта по последнее воскресенье октября, getTimezoneOffset () для текущего дня и 1 января выдаст нам один и тот же результат только, если галка НЕ стоит, а если стоит, то для текущего дня getTimezoneOffset () будет отличатся на -60, от getTimezoneOffset () для 1 января. Читать до тех пор, пока не поймешь, что я прав :D |
Цитата:
Чтобы показать, летнее время У ПОЛЬЗОВАТЕЛЯ или нет. Якобы. Т.е. вы сравнением с зимним временем пытаетесь угадать - стоит ли галка (что само по себе неверно). Но для московского времени ВООБЩЕ НЕ ВАЖНО - есть ли в стране пользователя летнее время, стоит ли у него галка, когда в его стране летнее время начинается. Важно одно - чтобы было правильное время по Гринвичу. getTimezoneOffset тут вообще не при чем. Цитата:
И в том случае ЕСЛИ МЫ ПРОВЕРИМ день и месяц (а в этом случае нам опять getTimezoneOffset не нужен). Цитата:
Ну да ладно, угар 6-и дневной рабочей недели пройдет - может все станет ясно. |
я гляжу тут сурьезная батальщина развернулась :D
сделаем проще что в этот код и куда нужно вписать, чтобы часовая стрелка переместилась на час вперед, когда перейдем на летнее время, и на час назад, в тот день, когда перейдем на зимнее время? :away: Цитата:
|
Цитата:
|
да :victory:
потому что оно есть в Москве |
так какой будет скрипт?
|
Цитата:
|
| Часовой пояс GMT +4, время: 11:03. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.