Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.16;
Скачать: CL | DM;

Вниз

Перевод любого гринвичского времени в местное   Найти похожие ветки 

 
Arfedin   (2007-03-09 16:27) [0]

Необходима функция:
Function(GMT): LocalDateTime, где

GMT - Greenwich Mean Time, дата и время по гринвичу,
LocalDateTime - локальное время
Часовой пояс при пересчёте берётся из настроек Windows).

Как пример работы, для GMT+08:00:
16:00:00 28.10.2006 => 01:00:00 29.10.2006
17:00:00 28.10.2006 => 02:00:00 29.10.2006
18:00:00 28.10.2006 => 02:00:00 29.10.2006(тот же результат)
19:00:00 28.10.2006 => 03:00:00 29.10.2006
 Почему перевод стрелок в 2 ночи - даже и не знаю. Так всегда, для всех часовых поясов?


 
Плохиш ©   (2007-03-09 16:40) [1]

Модуль XSBuiltIns класс TXSBaseCustomDateTime.


 
Arfedin   (2007-03-09 18:10) [2]

Не нашёл TXSBaseCustomDateTime. Ещё нету в delphi6?


 
Джо ©   (2007-03-09 18:14) [3]

Не вполне понял вопрос, наверное.
См. SystemTimeToTzSpecificLocalTime из WinAPI. И вообще раздел Time functions в SDK или MSDN.


 
Arfedin   (2007-03-09 18:46) [4]

Вот процедура, пользуйтесь кому надо. Всем спасибо!

Function GmtToLocalTime(t: tdatetime):tdatetime;
var
 y1,y2: TSystemTime;
begin
 DateTimeToSystemTime(t,y1);
 SystemTimeToTzSpecificLocalTime(nil,y1,y2);
 result:=SystemTimeToDateTime(y2)
end;


 
Интересующийся   (2007-03-10 06:05) [5]

Arfedin   (09.03.07 18:46) [4]

А обратная как будет выглядеть?


 
Arfedin   (2007-03-26 18:20) [6]

В продолжение темы. Как раз понадобилось обратное преобразование. Но какое-то странное, delphi6 о нём ничего не знает. И delphi7, кажись, тоже. Итак:

Function LocalTimeToGMT(t: tdatetime):tdatetime;
var
 y1,y2: TSystemTime;
 z:TIME_ZONE_INFORMATION;
begin
 DateTimeToSystemTime(t,y1);
 GetTimeZoneInformation(z);
 TzSpecificLocalTimeToSystemTime(z,y1,y2);
 result:=SystemTimeToDateTime(y2)
end;

Однако есть небольшое НО, чтобы функция работала:
1)
function TzSpecificLocalTimeToSystemTime(const lpTimeZoneInformation: TIME_ZONE_INFORMATION;
 const lpLocalTime: SYSTEMTIME; var lpUniversalTime: SYSTEMTIME): BOOL;stdcall;
{$EXTERNALSYM TzSpecificLocalTimeToSystemTime}
2) function TzSpecificLocalTimeToSystemTime; external kernel32 name "TzSpecificLocalTimeToSystemTime";

Если есть предложения как убрать это НО, буду рад. Почему delphi может не знать об этой функции?



Страницы: 1 вся ветка

Текущий архив: 2007.09.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.028 c
2-1187987876
TPel
2007-08-25 00:37
2007.09.16
Антивирусник учебный


9-1160220897
alpha5
2006-10-07 15:34
2007.09.16
Углы поворота


2-1188065215
hprx
2007-08-25 22:06
2007.09.16
Работа с графикой.


2-1187707790
-=Le][=-
2007-08-21 18:49
2007.09.16
FastReport


8-1165404177
T54
2006-12-06 14:22
2007.09.16
Вырезание куска из видеофайла