Главная страница
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.018 c
15-1187542819
Сатир
2007-08-19 21:00
2007.09.16
Прога редактирования mp3


3-1179312724
MZ
2007-05-16 14:52
2007.09.16
Импорт из *.dbf в FireBird


15-1187263645
мирроорр
2007-08-16 15:27
2007.09.16
вопрос про создание беспроводной сети


2-1187861485
TPel
2007-08-23 13:31
2007.09.16
снимок TPanel


15-1185599882
IMHO
2007-07-28 09:18
2007.09.16
Шведский стол