![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SystemTime [D6]
Александр_К © (2007-08-13 08:33:00)Уважаемые мастера.
Почему при переводе 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;
antonn (2007-08-13 23:10:00) [1]хм.. а formatdatetime() в каком модуле находится?
patrushevd1982 (2007-08-13 23:08:00) [2]ЕПРСТ!.... Посмотри, как выглядит timetostr и сделай нечто подобное!!!
Debug (2007-08-13 17:56:00) [3]
> или в лог записать в
> текстовом виде.
абсолютно точно
DVM (2007-08-13 10:44:00) [4]
> нафига?
Ну может ему время где вывести надо или в лог записать в текстовом виде.
DVM (2007-08-13 10:43:00) [5]
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:42:00) [6]
> Я не хочу подключать SysUtils, так как программа пишется
> на WinAPI.
Тогда и действуй по правилам WinAPI. Функции для форматирования там тоже есть и причем с учетом настроек локали.
GetLocalTime()
GetTimeFormat()
GetLocaleInfo()
sniknik (2007-08-13 10:42:00) [7]> Я делаю так:
нафига? что вообще за дурацкая привычка работать не с датой, а с ее строковым представлением?
Debug (2007-08-13 09:22:00) [8]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]);
sniknik (2007-08-13 08:57:00) [9]> Я не хочу подключать SysUtils, так как программа пишется на WinAPI.
сам себе злобный буратино...
ну ладно не хочеш подключать..., но посмотреть как сделано в нем, по нормальному, тоже не хочеш? и узнать как время в системе, виндах, устроено тоже? а без этого писать на WinAPI смысла мало.
Александр_К (2007-08-13 08:42:00) [10]Я не хочу подключать SysUtils, так как программа пишется на WinAPI.
Anatoly Podgoretsky (2007-08-13 08:38:00) [11]> Александр_К (13.08.2007 08:33:00) [0]
Что значит не тот час, неправильный или не тот который ты ожидаешь.
Как устроено время в мире знаком?
Вообще то это глупый метод формирования текстовой строки из времени, может стоит ознакомиться с функциями времени в Дельфи?