Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.03.2012, 23:42
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 1  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
По умолчанию клиентонезависимое время

День добрый такая проблема, мне с сервера присылают дату , моя задача перевести в милисекунды и отобразить как часы и минуты соотв потом.
Что делаю

Код AS3:
var d:Date = new Date();
d.setTime(Date.parse(serverTime));
_globalTime = d.getTime();
var h:String = d.getHours().toString();
var m:String = d.getMinutes().toString();
if (h.length < 2) h = '0' + h;
if (m.length < 2 ) m = '0' + m;
 
_timeTf.text = h + ':' + m;
В этом случае, если на клиенте меняют часовой пояс, то когда перевожу в милисекунды показывает локальное время почему то. Что делаю не так?
__________________
Марк Tween

Старый 20.03.2012, 23:57
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Ну а в хелпе что написано?
Цитата:
getHours () метод
Возвращает час (целое число от 0 до 23) дня, относящегося к объекту Date, по местному времени. Местное время определяется операционной системой, в которой запущен Flash Player.
Цитата:
getUTCHours () метод
Возвращает из объекта Date час дня (целое число от 0 до 23) по всемирному скоординированному времени (UTC).
__________________
Reality.getBounds(this);

Старый 21.03.2012, 00:31
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 3  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Wolsh это все ясно. Только я не понял, второй метод не относится к опрерационной системе?

Добавлено через 31 минуту
Попробовал по UTC как ты мне посоветовал, но теперь выводит время на 4 часа раньше.
Мне передают строку Wed, 21 Mar 2012 00:01:31 +0400 , получается 20:01 , выходит надо вручную добавлять 4 часа теперь? ! А если будет +0300 или вообще другое, откуда я буду знать какое число прибавлять, вычитать ? или как то все по другому делается?
__________________
Марк Tween

Старый 21.03.2012, 01:53
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
http://ru.wikipedia.org/wiki/%D0%A7%...BE%D1%8F%D1%81
http://ru.wikipedia.org/wiki/UTC
"Серверное" время и есть UTC, только отдается обычно в секундах. Это просто число [милли]секунд, прошедших с 0:00:000 1 января 1970 года. То есть оно не зависит от часового пояса, летнего времени и "операционной системы". На любом сервере в любой точке земного шара в один момент времени это одна и та же цифра. А локальное время в операционной системе уже учитывает часовой пояс и летнее время.
Сформулируйте вопрос по-человечески. Нифига не понятно, зачем вручную прибавлять 4 часа, если Вам нужно не локальное время.
__________________
Reality.getBounds(this);

Старый 21.03.2012, 03:18
K.A.T.A.F.A.L.K.E.R вне форума Посмотреть профиль Отправить личное сообщение для K.A.T.A.F.A.L.K.E.R Найти все сообщения от K.A.T.A.F.A.L.K.E.R
  № 5  
Ответить с цитированием
K.A.T.A.F.A.L.K.E.R
 
Аватар для K.A.T.A.F.A.L.K.E.R

Регистрация: Jul 2005
Адрес: Go, Ukraine!
Сообщений: 787
Отправить сообщение для K.A.T.A.F.A.L.K.E.R с помощью ICQ
Не совсем понятно в чем задача в целом.
Date.parse корректно распарсил дату сервера "Wed, 21 Mar 2012 00:01:31 +0400".
Если нужно именно время сервера - так вот же она, 00:01:31, в чем проблема?
Если хочется парсить через Date - тогда да, Вы получите либо в UTC что именно 20:01 либо свое локальное, все это Date делает автоматически. Опять же, часовой пояс свой сервер вернул: +0400.
__________________
...я люблю людей!..

Старый 21.03.2012, 12:47
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 6  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Поясняю общую задачу, чтобы было всем понятно.
1. Сервер передает время.
2. Нужно отобразить часы:минуты на странице.
3. Нужно сохранять ПОЛНОЕ время в милисекундах.
4. Приходят события, у них тоже есть некое серверное время, естественно отличное от того, что приходит изначально, на час или на два , ну вообщем не важно любое...
5. Если ГЛОБАЛЬНОЕ ВРЕМЯ - ВРЕМЯ СОБЫТИЯ > 35 минут , такое событие считается не валидным. Вот для этого и сохраняется глобальное время каждую секунду, вот поэтому нельзя распарсить без даты.
__________________
Марк Tween

Старый 21.03.2012, 13:25
K.A.T.A.F.A.L.K.E.R вне форума Посмотреть профиль Отправить личное сообщение для K.A.T.A.F.A.L.K.E.R Найти все сообщения от K.A.T.A.F.A.L.K.E.R
  № 7  
Ответить с цитированием
K.A.T.A.F.A.L.K.E.R
 
Аватар для K.A.T.A.F.A.L.K.E.R

Регистрация: Jul 2005
Адрес: Go, Ukraine!
Сообщений: 787
Отправить сообщение для K.A.T.A.F.A.L.K.E.R с помощью ICQ
Ну так а в чем проблема-то отобразить время?? Сервер его строкой передал, если не хочется возиться с часовыми поясами - вытащите время из строки что пришла.
По поводу "сравнить время" - делайте Date.parse(...) как и раньше; .getTime вернят Вам время в UTC. Каждый раз когда приходит это "событие" делайте то же самое, сравнивайте .getTime "глобального времени" и "события".
__________________
...я люблю людей!..

Старый 21.03.2012, 13:28
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 8  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
ну собственно так я и хотел делать, думал может есть варианты лучше.
__________________
Марк Tween

Старый 21.03.2012, 15:01
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 9  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
1. Сервер передает время.
4. Приходят события, у них тоже есть некое серверное время...
Как именно сервер отдает время, текущее и время события? Строкой, уже отформатированной в дату, или одним числом, количеством секунд? Если в обоих случаях это кол-во секунд, то сразу вычесть и перевести остаток в минуты, сравнить с лимитом.
Получить форматную дату для отображения через парсинг.
Еще не понял – вы каждый раз при получении события запрашиваете и текущее время на сервере? Или используете системные часы?
__________________
Reality.getBounds(this);

Старый 21.03.2012, 18:02
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 10  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Использую свои часы через таймер. сервер отдает только 1 раз ясное дело. А для события, ну по приходу и получаю. Нет не в секундах, а строкой и для события и для общего времени.

Добавлено через 3 минуты
Wolsh а еще вопрос.
А можно так ?
Код AS3:
var d:Date = new Date();
d.setHours(10);
d.setMinutes(20);
и по таймеру проверять следующее время.
Или в этом случае все равно локальное компа вернет?
Вроде попробовал вернуло 10 часов...
Что скажешь?
__________________
Марк Tween


Последний раз редактировалось in4core; 21.03.2012 в 18:06.
Создать новую тему Ответ Часовой пояс GMT +4, время: 18:23.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 18:23.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.