Главная страница
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.026 c
2-1187867306
nord489
2007-08-23 15:08
2007.09.16
MainMenu и PopupMenu


15-1187506992
rol_intal@mail.ru
2007-08-19 11:03
2007.09.16
кабель


2-1187716884
tim_ka
2007-08-21 21:21
2007.09.16
Stretch Bitmap


8-1165417477
algol
2006-12-06 18:04
2007.09.16
Разобрать медиа файл и построить спектр


2-1187867001
Daedr
2007-08-23 15:03
2007.09.16
Цикл