UTC time to Local Time

Программирование на Pascal

Модератор: trubb

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Urgor
лейтенант
Сообщения: 662
Зарегистрирован: 2006-03-14 16:30:18
Откуда: Гилея (СПб)
Контактная информация:

UTC time to Local Time

Непрочитанное сообщение Urgor » 2006-09-21 6:54:03

Как можно врямя в UTC преобразовать в локальное время на системе? Или хотя бы как получить смещение для зимнего/летнего времени?
Власть в руках у чужаков, и ты им платишь дань...

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2520 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
trubb
лейтенант
Сообщения: 864
Зарегистрирован: 2005-03-16 17:42:26
Откуда: сами мы не местные, приехали на лечение

Непрочитанное сообщение trubb » 2006-09-22 8:45:31

из реестра можно выдрать часовой пояс типа GMT+5

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones
иГрАюВсТрАйКбОл!

Аватара пользователя
Urgor
лейтенант
Сообщения: 662
Зарегистрирован: 2006-03-14 16:30:18
Откуда: Гилея (СПб)
Контактная информация:

Непрочитанное сообщение Urgor » 2006-09-22 9:19:24

Не. Надо именно смещение с учетом летнего/зимнего времени. Пока сделал так:

Код: Выделить всё

Function IsSunnyTime:boolean;
var
  Year, Month, Day, DOW: Word;
  sdate, wdate : Tdatetime;
begin
  result:=false;
  DecodeDate(now,Year,month,day);
  DecodeDateFully(EncodeDate(Year, 3, 31), Year, Month, Day, DOW);
  sdate := EncodeDate(Year, 3, 32 - DOW);
  DecodeDateFully(EncodeDate(Year, 10, 31), Year, Month, Day, DOW);
  wdate := EncodeDate(Year, 10, 32 - DOW);
  if (now >= sdate) and (now < wdate) then result:=true;
end;

function GetTimeZone: integer;
var
  TimeZone: TTimeZoneInformation;
begin
  GetTimeZoneInformation(TimeZone);
  Result := TimeZone.Bias div -60;
  if IsSunnyTime then Result:=TimeZone.Bias div -60 +1;
end;
Власть в руках у чужаков, и ты им платишь дань...