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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.09.2011, 15:52
greep вне форума Посмотреть профиль Отправить личное сообщение для greep Найти все сообщения от greep
  № 1  
Ответить с цитированием
greep
 
Аватар для greep

Регистрация: Jun 2002
Адрес: on the backyard
Сообщений: 285
Отправить сообщение для greep с помощью ICQ
По умолчанию UTC или GMT

Подскажите пожалуйста как узнать какой стандарт времени стоит на компе юзера?

Еще вопрос: getTimezoneOffset показывает разницу с универсальным временем. А эта разница будет отличаться в зависимости от того стоит ли GMT или UTC?


Последний раз редактировалось greep; 22.09.2011 в 16:04. Причина: Дополнил
Старый 22.09.2011, 16:07
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 2  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
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)
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 22.09.2011, 16:24
greep вне форума Посмотреть профиль Отправить личное сообщение для greep Найти все сообщения от greep
  № 3  
Ответить с цитированием
greep
 
Аватар для greep

Регистрация: Jun 2002
Адрес: on the backyard
Сообщений: 285
Отправить сообщение для greep с помощью ICQ
Ни как не могу разобраться... Мне нужно сделать так, чтобы таймер отсчитывал время от нужной даты по московскому времени, но флешка может быть запущена во Владивостоке или Минске.

Простенький скрипт показывает правильное время, но только в том случае, если на компьютере стоит стандарт GMT. В случае если стоит UMC - время отстает на час. Как решить эту проблемку?

Код AS1/AS2:
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.
Старый 22.09.2011, 16:36
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 4  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Вы путаете. Флэш все считает в UTC. UNIX - время.
GMT в данном случае - поясное смещение. Оно на комп не устанавливается. Это не плагин. Оно просто есть.
Вот оно - .getTimezoneOffset()

Локальное время компа - это просто new date()
Чтобы получить с ГМТ=0 - вычитайте getTimezoneOffset()

Чтобы ВАМ локально получить время Москвы - вычитаете из своего локального времени getTimezoneOffset() и прибавляете поясное смещение Москвы. Так как сейчас уже нет перехода на летнее-зимнее, то прибавляете всегда 4

Вот калькулятор: http://vkontakte.ru/app1871605
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 22.09.2011, 16:41
greep вне форума Посмотреть профиль Отправить личное сообщение для greep Найти все сообщения от greep
  № 5  
Ответить с цитированием
greep
 
Аватар для greep

Регистрация: Jun 2002
Адрес: on the backyard
Сообщений: 285
Отправить сообщение для greep с помощью ICQ
Да-да... Так я и делаю в данном примере, но почему, когда я ставлю часовой пояс Минск, он показывает различие в 2 часа, а не в 1?

Старый 22.09.2011, 16:47
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 6  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Сложно сказать. Плюс-минус час - можете путаться в летне-зимнем исчислении.

И, кстати, класс даты ооочень мощный. Мощности можно и нужно использовать.
Оцените данный примерчик:

Код AS1/AS2:
var targetDate:Date = new Date(2011,10,1);
 
onEnterFrame = function()
{
	var DEC:Date = new Date( targetDate - new Date() )
	trace( DEC.getHours()+":"+DEC.getMinutes()+":"+DEC.getSeconds() )
}
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2


Последний раз редактировалось dark256; 22.09.2011 в 16:50.
Старый 22.09.2011, 17:48
greep вне форума Посмотреть профиль Отправить личное сообщение для greep Найти все сообщения от greep
  № 7  
Ответить с цитированием
greep
 
Аватар для greep

Регистрация: Jun 2002
Адрес: on the backyard
Сообщений: 285
Отправить сообщение для greep с помощью ICQ
2dark256: Спасибо. Благодаря вашему примеру все заработало правильно. При смене часовых поясов часы меняются как положено. Жаль только не получилось понять в чем именно загвоздка с прошлым примерном. Так или иначе, я вам очень благодарен за помочь.

Добавлено через 33 минуты
Хотя нет... Видимо я поторопился с выводами... Почему-то не работает.

Код AS1/AS2:
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);
    }
 
}
Добавлено через 56 минут
И самое странное, что при смене часового пояса на 1 час, значение часов перескакивает на 2 часа. Если изменить часовой пояс на 2 часа - значение перескакивает на 4

Старый 22.09.2011, 18:54
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 8  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Как и где вы меняете часовой пояс?

И зачем вот это вот:

Код AS1/AS2:
    min = String(min % 60);
    if(min.length < 2){
        min = "0" + min;
    }
Не проще ли:

Код AS1/AS2:
if ( min < 10) min = "0"+min;
У меня смутное ощущение, что пока вы там модули вычисляете, у вас данные изменяются...
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 22.09.2011, 22:46
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 9  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Цитата:
Не проще ли:
Проще так
Код AS1/AS2:
new Date ().toString ().split (" ")[3]
Сразу выдает время в формате HH:MM:SS
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 23.09.2011, 00:24
greep вне форума Посмотреть профиль Отправить личное сообщение для greep Найти все сообщения от greep
  № 10  
Ответить с цитированием
greep
 
Аватар для greep

Регистрация: Jun 2002
Адрес: on the backyard
Сообщений: 285
Отправить сообщение для greep с помощью ICQ
2dark256: Часовой пояс я меняю тут:

Код AS1/AS2:
var min = Math.floor(sec / 60 + difference) + 240;
где difference

Код AS1/AS2:
var difference = today.getTimezoneOffset();
а 240 - разница этого нулевого времени с московским... Когда выставляю время на компе в московском часовом поясе - все работает ок, когда меняю на минск - разница 2 часа, хотя difference (-180)...


вот для наглядности весь скрипт:

Код AS1/AS2:
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...
Вложения
Тип файла: zip timer.zip (6.9 Кб, 20 просмотров)


Последний раз редактировалось greep; 23.09.2011 в 00:55.
Создать новую тему Ответ Часовой пояс GMT +4, время: 01:55.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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