![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#1
|
|
Новичок ![]() Группа: Новичок Сообщений: 2 Регистрация: 29.07.2008 Пользователь №: 4441 ![]() |
Необходимо создать аналоговые часы на FLASH с учётом времени в разных часовых поясах. Сами часы делаются достаточно просто. Вот стандартный алгоритм расчёта перемещения стрелок по циферблату:
Код // Читаем текущее системное время time=new Date(); // Выуживаем часы, минуты, секунды seconds = time.getSeconds(); minutes = time.getMinutes(); hours = time.getHours(); hours = hours + (minutes/60); // Подсчитаем часы, минуты, секунды seconds = seconds*6; minutes = minutes*6; hours = hours*30; // Вращаем стрелки sec._rotation=seconds; min._rotation=minutes; hour._rotation=hours; Для того, чтобы получить время по гринвичу(UTC он же GMT). Кусок по выуживанию часов, минут, секунд изменится следующим образом: Код // Выуживаем часы, минуты, секунды по Гринвичу(GMT) seconds = time.getUTCSeconds(); minutes = time.getUTCMinutes(); hours = time.getUTCHours(); Остаётся сообразить, как переделать этот кусок для разных часовых поясов, с учётом переходов на летнее/змнее время. Подскажите пожалуйста? (IMG:http://f.hostq.ru/forum/style_emoticons/default/smile.gif) |
|
|
![]()
Сообщение
#2
|
|
C:\> ![]() ![]() ![]() ![]() ![]() Группа: Супермодераторы Сообщений: 1556 Регистрация: 10.04.2006 Из: Млечный Путь, 3-я планета от Солнца, Россия, Москва, Люблино. Пользователь №: 293 ![]() |
ну учет перехода на зимнее/летнее время вообщето делается на компьютере автоматически насколько я знаю, а флеш какраз подравнивается под часы компьютера. уже одной пробемой меньше.
а чтобы на разные часовы пояса, так там же ясно объяснено, что есть +0 +1+2+3+4+5+6+7 итд и так же -1-2-3-4-5-6-7.. итд так вот и отнимай или прибавляй к переменной hours значение часового пояса. |
|
|
![]()
Сообщение
#3
|
|
Новичок ![]() Группа: Новичок Сообщений: 2 Регистрация: 29.07.2008 Пользователь №: 4441 ![]() |
отнимай или прибавляй к переменной hours значение часового пояса. Так пока и сделал. За одним небольшим нюансом. Летнее время в РФ - GMT+4, зимнее - GMT+3. А в Нью йорке зимой GMT-5, летом GMT-4. (http://ru.wikipedia.org/wiki/Нью_йорк) В этом вся и загвоздка. (IMG:http://f.hostq.ru/forum/style_emoticons/default/smile.gif) |
|
|
![]()
Сообщение
#4
|
|
Участник ![]() ![]() Группа: Новичок Сообщений: 69 Регистрация: 3.01.2007 Пользователь №: 2312 ![]() |
Для чего делаются часы? Если для сайта, то выбранный вариант решения не годится. На сайте — только опрос серверных скриптов. Потому что:
- часы на машине-клиенте могут быть неправильно настроены - разные операционные системы имеют разное представление о том, что есть системное время: ms windows системы уверены, что это местное время, все остальные, что Гринвич (к которому ещё надо прибавить время в зависимости от того, какой пояс выставлен). Соответственно потенциальные грабли. Так что серверную часть часиков на php (к примеру), клиентскую на флэш. Как вариант — взять время при старте флэшки от сервера, внести поправку с временем машины и дальше так отсчитывать. Экстремальные варианты вроде просевшей батарейки можно не учитывать, если это конечно не какие-нибудь важные часы для сайта биржи или спортивного тотализатора. |
|
|
![]()
Сообщение
#5
|
|
Активист ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 980 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
Так пока и сделал. За одним небольшим нюансом. Летнее время в РФ - GMT+4, зимнее - GMT+3. А в Нью йорке зимой GMT-5, летом GMT-4. В этом вся и загвоздка. (IMG:http://f.hostq.ru/forum/style_emoticons/default/smile.gif) А что тут смущает? Смысл летнего времени - часы на час вперед: +3 (москва зимнее) +1 (на летнее) = +4 -5 (яблоко зимнее) +1 (на летнее) = -4 Засада в другом. В каждой местности может быть свой собственный график перехода на летнее/зимнее время или даже вообще такого перехода не существовать (без запудривания мозгов людям). Потому "универсальную формулу" на флеше не сделаешь. Надо делать расчет-проверку для конкретной местности. (ситуация когда пользователь отключил на своем компе переход на летнее время и т.п. вообще не рашаемая - у него изначально будет GMT неверно). Например для Москвы и Яблока график перехода различен. В москве летнее время начинается в субботу перед последним воскресеньем марта, а в Яблоке - второе воскресенье марта. NB! Местное время - это вообще произвол местных властей. Кто как хочет, тот так и устанавливает. Например, московский часовой пояс +2 часа от Гринвича. +1 час добавляет декретное время большевиков (вот и получается зимой +3 часа). И еще +1 час накидывают летом (+4 часа летом). |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 11.09.2011 - 19:04 |