![]() |
|
||||||||||
|
|||||
|
[+4 06.05.14]
|
Что то математика в голову совсем не лезет. Вот есть у нас локальное время 15:43 +0400 , и какое то время сервера 20:00 +0100. Нужно узнать чему соответсвует серверное время от локального, тоесть перевести серверное к формату локального. Если криво объяснил, вот пример
лок 15:20 +0400 сер 15:20 +0500 сер переводим в лок = 16:20 ( или 14:20 ? тьфу даже это забыл) Я так понимаю надо юзать getTimeZoneOffset - тока нифига сообразить не могу Добавлено через 26 минут
__________________
Марк Tween Последний раз редактировалось in4core; 05.07.2012 в 22:07. |
|
|||||
|
[+4 06.05.14]
|
Все оказывается намного страшнее.
Давай разберем простейшую задачу, нам тупо нужно узнать часовой пояс у локала и некого левого времени : var i:Number = Date.parse("Thu, 05 Jul 2012 21:00:00 +0400"); var d:Date = new Date(s); d.setTime(i); trace( d.toTimeString().split(' GMT')[1] ); // +0700 var dateLoc:Date = new Date() // локальное время, установили пояс +0700 trace( dateLoc.toTimeString().split(' GMT')[1] ); // +0700 P.s. expl про сервер ты не понял немного. Мне просто приходит строка с левым временем, не важно каким, но пояс всегда +0400 , но будем считать , что может и пояс быть любой. Это такая вот вещь, так вообщем надо. Можно проще все объяснить. Начинается ( некое ) событие , сервер всегда нам шлет начало события по МСК. У пользователя на компе может быть любое время и часовой пояс, нам соотв нужно подогнать МСК время которое пришло к локальному у пользователя. Тоесть если пришло 18.30 +0400 , а у пользователя 18.30 +0300 , то у него должно быть показано 17:30 Добавлено через 10 минут P.s. fck ! Тему можно закрывать, ктож знал, что любое setTime само считает от локального и никаких математика вообще не надо. Но с другой стороны, чтобы показать свою дату, придется с сервера строками вырезать минуты и часы и делать по таймеру прибавление счетчика... ужость
__________________
Марк Tween |
|
|||||
//utfMilliseconds не зависит от часовых поясов var utfMilliseconds:Number = Date.parse("Thu, 05 Jul 2012 10:00:00 +0100"); var date:Date = new Date(); date.setTime(utfMilliseconds); trace("utcHours=" + date.getUTCHours());//9 - всемирное скоординированное trace("hours=" + date.getHours());//13 - на моей машине Московское UTC +4 стоит Всмысле детально: получаем от сервера в таком виде, получаем с такой-то целью, нужно получить такое-то представление в поясе текущих настроек системы или в заданном еще где-то и т.д. Как-бы вырезать ещё ничего не приходилось, максимум - приходилось узнавать _условное_ смещение на сервере, чтобы знать когда наступает "условная полночь" для всех, ибо для каждого отдельно - слишком мутороно для сервера оказалось её устраивать. Последний раз редактировалось expl; 05.07.2012 в 23:19. |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:09. |
|
|
« Предыдущая тема | Следующая тема » |
|
|