Главная страница
    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.036 c
2-1187515795
RakoT
2007-08-19 13:29
2007.09.16
FileExists


2-1187873730
Алла_И
2007-08-23 16:55
2007.09.16
Копирование через Pointer


15-1187590944
kudatsky
2007-08-20 10:22
2007.09.16
Пропали хинты


15-1187525287
Tack
2007-08-19 16:08
2007.09.16
Предложение по реорганизации форумов delphimaster.ru


15-1187351797
Вася Правильный
2007-08-17 15:56
2007.09.16
украинский подсказчик слов SMS в телефоне nokia





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский