|
|
|||||
UTC или GMT
Подскажите пожалуйста как узнать какой стандарт времени стоит на компе юзера?
Еще вопрос: getTimezoneOffset показывает разницу с универсальным временем. А эта разница будет отличаться в зависимости от того стоит ли GMT или UTC? Последний раз редактировалось greep; 22.09.2011 в 16:04. Причина: Дополнил |
|
|||||
http://ru.wikipedia.org/wiki/%D0%92%...B5%D0%BC%D1%8F
Хэлп по классу date: The Date class lets you retrieve date and time values relative to universal time (Greenwich mean time, now called universal time or UTC) |
|
|||||
Ни как не могу разобраться... Мне нужно сделать так, чтобы таймер отсчитывал время от нужной даты по московскому времени, но флешка может быть запущена во Владивостоке или Минске.
Простенький скрипт показывает правильное время, но только в том случае, если на компьютере стоит стандарт GMT. В случае если стоит UMC - время отстает на час. Как решить эту проблемку? var today:Date = new Date(); var currentYear = today.getFullYear(); var currentTime = today.getTime(); var targetDate:Date = new Date(currentYear,8,26,9); var targetTime = targetDate.getTime(); var timeLeft = targetTime - currentTime; var difference = today.getTimezoneOffset(); var sec = Math.floor(timeLeft/1000); var min = Math.floor(difference + 240 + sec/60); var hours = Math.floor(min/60); var days = Math.floor(hours/24); sec = String(sec % 60); if(sec.length < 2){ sec = "0" + sec; } min = String(min % 60); if(min.length < 2){ min = "0" + min; } hours = String(hours % 24); if(hours.length < 2){ hours = "0" + hours; } days = String(days); if(timeLeft > 0 ){ var counter:String = days + ":" + hours + ":" + min + ":" + sec; time_txt.text = counter; }else{ trace("TIME'S UP"); var newTime:String = "00:00:00:00"; time_txt.text = newTime; delete (this.onEnterFrame); } Последний раз редактировалось greep; 22.09.2011 в 16:26. |
|
|||||
Вы путаете. Флэш все считает в UTC. UNIX - время.
GMT в данном случае - поясное смещение. Оно на комп не устанавливается. Это не плагин. Оно просто есть. Вот оно - .getTimezoneOffset() Локальное время компа - это просто new date() Чтобы получить с ГМТ=0 - вычитайте getTimezoneOffset() Чтобы ВАМ локально получить время Москвы - вычитаете из своего локального времени getTimezoneOffset() и прибавляете поясное смещение Москвы. Так как сейчас уже нет перехода на летнее-зимнее, то прибавляете всегда 4 Вот калькулятор: http://vkontakte.ru/app1871605 |
|
|||||
Да-да... Так я и делаю в данном примере, но почему, когда я ставлю часовой пояс Минск, он показывает различие в 2 часа, а не в 1?
|
|
|||||
Сложно сказать. Плюс-минус час - можете путаться в летне-зимнем исчислении.
И, кстати, класс даты ооочень мощный. Мощности можно и нужно использовать. Оцените данный примерчик: Последний раз редактировалось dark256; 22.09.2011 в 16:50. |
|
|||||
2dark256: Спасибо. Благодаря вашему примеру все заработало правильно. При смене часовых поясов часы меняются как положено. Жаль только не получилось понять в чем именно загвоздка с прошлым примерном. Так или иначе, я вам очень благодарен за помочь.
Добавлено через 33 минуты Хотя нет... Видимо я поторопился с выводами... Почему-то не работает. var targetDate:Date = new Date(2011,9,26,9); onEnterFrame = function() { var tadaaa:Date = new Date( targetDate - new Date() ); var days = tadaaa.getDay(); var hours = tadaaa.getHours(); var min = tadaaa.getMinutes(); var sec = tadaaa.getSeconds(); timeLeft = targetDate - new Date(); sec = String(sec % 60); if(sec.length < 2){ sec = "0" + sec; } min = String(min % 60); if(min.length < 2){ min = "0" + min; } hours = String(hours % 24); if(hours.length < 2){ hours = "0" + hours; } days = String(days); if(timeLeft > 0 ){ var counter:String = days + ":" + hours + ":" + min + ":" + sec; time_txt.text = counter; }else{ trace("TIME'S UP"); var newTime:String = "00:00:00:00"; time_txt.text = newTime; delete (this.onEnterFrame); } } И самое странное, что при смене часового пояса на 1 час, значение часов перескакивает на 2 часа. Если изменить часовой пояс на 2 часа - значение перескакивает на 4 |
|
|||||
Как и где вы меняете часовой пояс?
И зачем вот это вот: Не проще ли: У меня смутное ощущение, что пока вы там модули вычисляете, у вас данные изменяются... |
|
|||||
2dark256: Часовой пояс я меняю тут:
где difference а 240 - разница этого нулевого времени с московским... Когда выставляю время на компе в московском часовом поясе - все работает ок, когда меняю на минск - разница 2 часа, хотя difference (-180)... вот для наглядности весь скрипт: this.onEnterFrame = function() { var today:Date = new Date(); var currentYear = today.getFullYear(); var currentTime = today.getTime(); var targetDate:Date = new Date(currentYear, 8, 26, 9, 0, 0); var targetTime = targetDate.getTime(); var timeLeft = targetTime - currentTime; var difference = today.getTimezoneOffset(); var sec = Math.floor(timeLeft / 1000); var min = Math.floor(sec / 60 + difference) + 240; var hours = Math.floor(min / 60); var days = Math.floor(hours / 24); sec = String(sec % 60); if (sec.length < 2) { sec = "0" + sec; } min = String(min % 60); if (min.length < 2) { min = "0" + min; } hours = String(hours % 24); if(hours.length < 2){ hours = "0" + hours; } days = String(days); if (timeLeft > 0) { var counter:String = days + ":" + hours + ":" + min + ":" + sec; time_txt.text = counter; } else { trace("TIME'S UP"); var newTime:String = "00:00:00:00"; time_txt.text = newTime; delete (this.onEnterFrame); } }; help... Последний раз редактировалось greep; 23.09.2011 в 00:55. |
Часовой пояс GMT +4, время: 01:55. |
|
« Предыдущая тема | Следующая тема » |
|
|