![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перевод любого гринвичского времени в местное [D6, WinXP]
Arfedin © (2007-03-09 16:27:00)Необходима функция:
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 ночи - даже и не знаю. Так всегда, для всех часовых поясов?
Arfedin (2007-03-26 18:20:00) [1]В продолжение темы. Как раз понадобилось обратное преобразование. Но какое-то странное, 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 может не знать об этой функции?
Интересующийся (2007-03-10 06:05:00) [2]Arfedin (09.03.07 18:46) [4]
А обратная как будет выглядеть?
Arfedin (2007-03-09 18:46:00) [3]Вот процедура, пользуйтесь кому надо. Всем спасибо!
Function GmtToLocalTime(t: tdatetime):tdatetime;
var
y1,y2: TSystemTime;
begin
DateTimeToSystemTime(t,y1);
SystemTimeToTzSpecificLocalTime(nil,y1,y2);
result:=SystemTimeToDateTime(y2)
end;
Джо (2007-03-09 18:14:00) [4]Не вполне понял вопрос, наверное.
См. SystemTimeToTzSpecificLocalTime из WinAPI. И вообще раздел Time functions в SDK или MSDN.
Arfedin (2007-03-09 18:10:00) [5]Не нашёл TXSBaseCustomDateTime. Ещё нету в delphi6?
Плохиш (2007-03-09 16:40:00) [6]Модуль XSBuiltInsкласс TXSBaseCustomDateTime.