Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.09;
Скачать: CL | DM;

Вниз

SystemTime   Найти похожие ветки 

 
Александр_К   (2007-08-13 08:33) [0]

Уважаемые мастера.
Почему при переводе SystemTime в час получается не тот час, который стоит в системе, хотя остальные параметры определяются верно.

function GetTime:string;
var
   k1,k2,k3:string;
   SystemTime:TSystemTime;
begin
   Windows.GetSystemTime(SystemTime);
   if SystemTime.wMinute < 10 then
       k2:="0"+IntToStr(SystemTime.wMinute)
   else
       k2:=IntToStr(SystemTime.wMinute);
   if SystemTime.wHour < 10 then
       k1:="0"+IntToStr(SystemTime.wHour)
   else
       k1:=IntToStr(SystemTime.wHour);
   if SystemTime.wSecond < 10 then
       k3:="0"+IntToStr(SystemTime.wSecond)
   else
       k3:=IntToStr(SystemTime.wSecond);
   Result:="["+k1+":"+k2+":"+k3+"]";
end;


 
Anatoly Podgoretsky ©   (2007-08-13 08:38) [1]

> Александр_К  (13.08.2007 08:33:00)  [0]

Что значит не тот час, неправильный или не тот который ты ожидаешь.
Как устроено время в мире знаком?
Вообще то это глупый метод формирования текстовой строки из времени, может стоит ознакомиться с функциями времени в Дельфи?


 
Александр_К   (2007-08-13 08:42) [2]

Я не хочу подключать SysUtils, так как программа пишется на WinAPI.


 
sniknik ©   (2007-08-13 08:57) [3]

> Я не хочу подключать SysUtils, так как программа пишется на WinAPI.
сам себе злобный буратино...
ну ладно не хочеш подключать..., но посмотреть как сделано в нем, по нормальному, тоже не хочеш? и узнать как время в системе, виндах, устроено тоже? а без этого писать на WinAPI смысла мало.


 
Debug ©   (2007-08-13 09:22) [4]

GetSystemTime - время по Гринвичу.
Я делаю так:

var Time : SystemTime;
...
GetLocalTime(Time);
Result := Format("%.2d/%.2d/%.4d %.2d:%.2d:%.2d", [Time.wDay, Time.wMonth, Time.wYear, Time.wHour, Time.wMinute, Time.wSecond]);


 
DVM ©   (2007-08-13 10:42) [5]


> Я не хочу подключать SysUtils, так как программа пишется
> на WinAPI.

Тогда и действуй по правилам WinAPI. Функции для форматирования там тоже есть и причем с учетом настроек локали.

GetLocalTime()
GetTimeFormat()
GetLocaleInfo()


 
sniknik ©   (2007-08-13 10:42) [6]

> Я делаю так:
нафига? что вообще за дурацкая привычка работать не с датой, а с ее строковым представлением?


 
DVM ©   (2007-08-13 10:43) [7]


function GetTime: string;
var
 st: TSystemTime;
 Time, FormatString: PChar;
 TimeSize, FormatStringSize: integer;
begin
 Result := "";
 FormatStringSize := GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_STIMEFORMAT, nil, 0);
 GetMem(FormatString, FormatStringSize * SizeOf(Char));
 GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_STIMEFORMAT, FormatString, FormatStringSize);
 GetLocalTime(st);
 TimeSize := GetTimeFormat(LOCALE_USER_DEFAULT, 0, nil, FormatString, nil, 0);
 GetMem(Time, TimeSize * SizeOf(Char));
 GetTimeFormat(LOCALE_USER_DEFAULT, 0, @st, FormatString, Time, TimeSize * SizeOf(Char));
 result := Time;
 FreeMem(Time);
 FreeMem(FormatString);
end;


 
DVM ©   (2007-08-13 10:44) [8]


> нафига?

Ну может ему время где вывести надо или в лог записать в текстовом виде.


 
Debug ©   (2007-08-13 17:56) [9]


> или в лог записать в
> текстовом виде.

абсолютно точно


 
patrushevd1982 ©   (2007-08-13 23:08) [10]

ЕПРСТ!.... Посмотри, как выглядит timetostr и сделай нечто подобное!!!


 
antonn ©   (2007-08-13 23:10) [11]

хм.. а formatdatetime() в каком модуле находится?



Страницы: 1 вся ветка

Текущий архив: 2007.09.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
8-1165410358
T54
2006-12-06 16:05
2007.09.09
image


15-1186600345
anton773
2007-08-08 23:12
2007.09.09
службы виндовс


15-1187106129
iZEN
2007-08-14 19:42
2007.09.09
Mdf2iso, есть ли аналоги iat.exe?


9-1159621357
@!!ex
2006-09-30 17:02
2007.09.09
Изменение данных в загруженном VBO


2-1187355411
Arhipus
2007-08-17 16:56
2007.09.09
Расуспендить и засуспендить (3 вопроса)