Главная страница
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.019 c
2-1186131708
GhosTer
2007-08-03 13:01
2007.09.09
String To PAnsiChar


2-1186460092
bagos
2007-08-07 08:14
2007.09.09
teechart


2-1187001644
gentos
2007-08-13 14:40
2007.09.09
сжатие отсканированной фотки


8-1165244587
Quicker
2006-12-04 18:03
2007.09.09
Проиграть MID, WAV


2-1187081956
newcounter
2007-08-14 12:59
2007.09.09
WideString из массива.