Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2009, 13:35   #1
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию Определить GMТ компьютера (Delphi)

Здравствуйте, поиском по форуму ничего не нашёл, даже слов GTM нет, я удивлён.

В нэте как-то глухо, по этому прошу помощи.

Нужно программно определить GTM компьютера, средствами Delphi 7.

Инфо:
GMТ - это часовой пояс... указывается в настройках часов компьютера.

Благодарю за ответы
Всё гениальное - просто!

Последний раз редактировалось SkyM@n; 23.07.2009 в 10:51.
Air вне форума Ответить с цитированием
Старый 22.07.2009, 13:46   #2
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию GMT v GTM

Это GMT, среднее время по Гринвичу (Гринвич — обсерватория на нулевом меридиане). А часовым поясом, скорее, является +1, +3 и т. п. — то есть то, что нужно прибавить к GMT, чтоб попасть в свой часовой пояс.

Программист путать буквы не должен. Поищите снова!
Sasha_Smirnov вне форума Ответить с цитированием
Старый 22.07.2009, 13:47   #3
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

тьфу ты... и то верно.
Ок, определить значение GMT на компьютере.

В принципе вопрос исчерпан, благодарю Sasha_Smirnov за своевременное предупреждение.


Код:
function GetTimeZone:String;
var TIME_ZONE:_TIME_ZONE_INFORMATION;
    i, j:integer;
begin
GetTimeZoneInformation(TIME_ZONE);
i:=TIME_ZONE.Bias div 60;
i:= i * -1;
j:=TIME_ZONE.Bias mod 60;
j:=abs(j);
Result:=inttostr(i)+':'+inttostr(j);
end;
Использование
Showmessage(GetTimeZone);

Пробовал всяко, и integer, и TTime, но в строковом формате как-то лучше. Задумался о TStringList, но тут думаю кому нужно так и сделают
Всё гениальное - просто!

Последний раз редактировалось Air; 22.07.2009 в 14:46.
Air вне форума Ответить с цитированием
Старый 15.06.2012, 08:22   #4
demin_as
Новичок
Джуниор
 
Регистрация: 15.06.2012
Сообщений: 1
По умолчанию

Возможно такое решение...
Код:
function GetDateTimeZone(AValue: TDateTime; AZoneMin: integer = 0): TDateTime;
  var
    TZ:_TIME_ZONE_INFORMATION;
    corMinutes: Integer;
  begin
    GetTimeZoneInformation(TZ);
    if TZ.Bias + AZoneMin  < 0 then corMinutes:= (TZ.Bias + AZoneMin) * -1
    else corMinutes:= TZ.Bias + AZoneMin ;
    if TZ.Bias + AZoneMin  < 0 then
      Result := AValue + EncodeTime(corMinutes div 60, corMinutes mod 60, 0, 0) * -1
    else
      Result := AValue + EncodeTime(corMinutes div 60, corMinutes mod 60, 0, 0);
  end;
demin_as вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# Определить вкл\выкл компьютера. Elmors C# (си шарп) 1 31.05.2009 00:44
Выключение компьютера Delphi Vladya Помощь студентам 5 10.02.2009 14:24
Как определить IP-адресс компьютера в локальной сети? SalasAndriy C/C++ Сетевое программирование 2 29.11.2007 02:09