Форум: "Начинающим";
Текущий архив: 2007.09.09;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.044 c