Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.039 c
9-1160687791
rts111
2006-10-13 01:16
2007.09.16
Максимальный размер карты и максимальное количество юнитов в RTS?


15-1187384893
Kostafey
2007-08-18 01:08
2007.09.16
С днем рождения ! 18 августа


15-1187089130
просто так
2007-08-14 14:58
2007.09.16
как запретить несанкционированное скачивание?


2-1187927020
Gydvin
2007-08-24 07:43
2007.09.16
Чтение wmf


2-1187551133
Oleg13
2007-08-19 23:18
2007.09.16
Как правильно вычитать разницу времени





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский