Показать сообщение отдельно
Старый 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.