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

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

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

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
По умолчанию Часы. Летнее\зимнее время. Как проверить правильно ли работают?

Привет. Вроде сделал украинские часы с переходом на летнее время, но не могу понять как проверить их работоспособность.
Я учитываю погрешность относительно гринвича. Летом эта погрешность составляет +3, зимой +2. Учитываю летний период присваиваю значение переменной shift = 3, и зимой shift = 2.
На компьютерном календаре меняю месяц и число (проверяю реакцию на летний\зимний периоды) - трейситься нормально. Но вот на стрелках как было 15.00 (на пример) так и осталось. Подскажите что я не так делаю? Или когда комп сам перейдёт на зимнее время то всё будет ок?
Если нужен исходник - я выложу.
Вот сам код:

Код AS1/AS2:
// Обычное Украинское время (не летнее) относительно гринвича +2, летнее +3
// Погрешность относительно гринвича
var shift:Number;
 
//Экземпляр класса Date
var today:Date = new Date();
// Текущий месяц (добавляем 1 т.к. первый месяц года начинается с ноля)
var month:Number = today.getMonth() + 1;
// День
var day:Number = today.getDate();
// Год
var year:Number = today.getFullYear();
 
 
// Определяем год, т.к. летнее время начинается\заканчивается в разные числа разного года
switch (year) {
	case 2009 :
		// В 2009-м году летнее время с 29 марта по 25 октября
		// Определяем летнее время сейчас или зимнее
		if (summerTime(29, 3, 25, 10)) {
			shift = 3;
		} else {
			shift = 2;
		}
		trace('2009');
		break;
 
	case 2010 :
		// В 2010-м году летее время с 28 марта по 31 октября
		// Определяем летнее время сейчас или зимнее
		if (summerTime(28, 3, 31, 10)) {
			shift = 3;
		} else {
			shift = 2;
		}
		trace('2010');
		break;
 
	default :
		trace('default');
}
 
// Определяем летнее время сейчас или зимнее
// sDay, sMon - день и месяц начала летнего времени
// fDay, fMon - день и мецяс окончания летнего времени
function summerTime(sDay:Number, sMon:Number, fDay:Number, fMon:Number):Boolean {
	if (month < sMon || month > fMon) {
		return false;
	}
	if ((month == sMon && day < sDay) || (month == fMon && day > fDay)) {
		return false;
	}
	return true;
}
///////////////////////////////////Крутим стрелки//////////////////////////////////////////////
 
s._rotation = today.getSeconds() * 6;
m._rotation = today.getMinutes() * 6;
h._rotation = (today.getUTCHours() + shift) * 30 + today.getMinutes() / 2;


Последний раз редактировалось Art_133; 16.06.2009 в 20:25.
Старый 20.07.2009, 01:44
  № 2  
Ответить с цитированием
c'v
Guest

Сообщений: n/a
Классный вопрос! Я над ним тоже голову ломаю. А вообще, было бы очень интересно, как написать код, который не на пару лет вперед, а на адцать лет вперед знал когда будет переход. Ведь если человеку можно сказать "последняя суббота такого-то месяца", то уж программе точно можно. Сколько не думал о таком if, ни к какому выводу не пришел...

В любом случае, мы же здесь явно не Америку открываем, наверняка этот вопрос десятки раз уже было освещен. Вот только где?.. Над запросом в google тоже приходится голову ломать… Help!

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
На мой взгляд, вы оба ерундой страдаете.
Код AS1/AS2:
trace (new Date (2009, 9, 25, 1));//Sun Oct 25 01:00:00 GMT+0400 2009
trace (new Date (2009, 9, 25, 2));//Sun Oct 25 02:00:00 GMT+0300 2009
Видите у одной даты GMT+0400, а у другой GMT+0300? Это и есть показатель зимнего или летнего времени.
Узнается с помощью getTimezoneOffset().
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 02.04.2011, 23:55
Prior вне форума Посмотреть профиль Отправить личное сообщение для Prior Найти все сообщения от Prior
  № 4  
Ответить с цитированием
Prior

Регистрация: Aug 2009
Сообщений: 74
у меня задача посложнее
мне надо сделать часики для разных часовых поясов например москва, киев, нью-йорк, токио
вот как подскажите там действовать, если в москве например уже непереводят часы а в багдаде, тбилиси кажись переводят
как учитывать такое

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

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

Сделайте собственную таблицу с параметрами-настройками городов и уже по ней сами выставляйте правильное время. А по getTimezoneOffset() вы лишь можете ЛОКАЛЬНЫЕ часы выставить на ноль, на гринвич. Все.
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

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

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

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


 


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


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