Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Дата перехода на летнее/зимнее время [D7, XP]


worldmen ©   (2009-11-01 00:25:00) 

Как вычислить даты в которые нужно переводить часы на летнее/зимнее время?


begin...end   (2009-11-01 10:28:00) [1]

В [2] опечатка:
LastDay := EncodeDate(Year, 3, 31).


begin...end   (2009-11-01 10:23:00) [2]

> Юрий Зотов ©   (01.11.09 01:47) [1]
> Result := EncodeDate(Year, 3, 24)
Почему 24?

> worldmen   (01.11.09 00:25)

function GetSummerTimeDate(Year: Word): TDate;
var
 LastDay: TDate;
begin
 LastDay := EncodeDate(Year, 5, 31);
 Result := LastDay - DayOfWeek(LastDay) + 1
end


Юрий Зотов   (2009-11-01 01:47:00) [3]

Переход на зимнее время осуществляется в последнее воскресенье октября.
Переход на летнее время осуществляется в последнее воскресенье марта.

Остальное легко делается утилитами из SysUtils, например:

function GetSummerTimeDate(Year: word): TDate;
begin
 Result := EncodeDate(Year, 3, 24);
 while DayOfWeek(Result) <> 1 do
   Result := IncDay(Result)
end;

function GetWinterTimeDate(Year: word): TDate;
begin
 Result := EncodeDate(Year, 10, 24);
 while DayOfWeek(Result) <> 1 do
   Result := IncDay(Result)
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо