Текущий архив: 2007.01.07;
Скачать: CL | DM;
Вниз
работа с SYSTEMTIME, FILETIME, прибавить любой промежуток времени Найти похожие ветки
← →
Max_2006 (2006-12-17 17:09) [0]Функцией GelLocalTime я узнаю текущее время установленное на компьютере в структуре SYSTEMTIME.. А вот как мне к этому времени прибавить например день, но так что если текущий день будет последним в текущем месяце то и месяц прибавится, так же и с годом... Попробовал сделать так:
var
sysTime: SYSTEMTIME;
begin
GetLocalTime(sysTime);
sysTime.wDay := sysTime.wDay + 1;
end;
День прибавляется, но без учета если текущий день будет последним в текущем месяце то и месяц прибавится, так же и с годом, т.е. получается и 32-й и 33-й и т.д.. день в месяце, чего нету на самом деле... Подозреваю что через FILETIME можно это реализовать, но как это сделать, т.е. математику этой структуры я что-то нигде не нашел, нашел единственное что время считается в 100нс, но так я и не понял, там есть dwHighDateTime и dwLowDateTime, и что с этим делать, как это считать? Прошу не посылась в MSDN, читал там...
← →
Eraser © (2006-12-17 17:14) [1]> [0] Max_2006 (17.12.06 17:09)
почему бы не использовать старый добрый TDateTime ?var
sysTime: TDateTime;
begin
sysTime := Now;
sysTime := sysTime + 1;
end;
потом, если, есть желаение, можно перевести в системный формат. хотя вижу смысл использовать онный, только если нужно получить свойства файла.
← →
Max_2006 (2006-12-17 17:30) [2]TDateTime, хоть и старый и добрый, но опять же таки, я на WinAPI учусь, не хочу борландовские модули подключать... Хоть TDateTime и находится в модуле System, а фонкции работы с ним в SysUtils, я и задал этот вопрос, чтобы обойтись без этого модуля..
← →
BiN © (2006-12-17 17:51) [3]
> Прошу не посылась в MSDN, читал там...
врач сказал в msdn, значит, в msdn.
← →
Max_2006 (2006-12-17 22:32) [4]Спасибо! Вы очень добры...
← →
BiN © (2006-12-17 23:59) [5]
> Max_2006 (17.12.06 17:09)
> Подозреваю что через
> FILETIME можно это реализовать, но как это сделать, т.е.
> математику этой структуры я что-то нигде не нашел, нашел
> единственное что время считается в 100нс, но так я и не
> понял, там есть dwHighDateTime и dwLowDateTime, и что с
> этим делать, как это считать? Прошу не посылась в MSDN,
> читал там...
type
FILETIMEEX = packed record
case Byte of
1: (F: FILETIME);
2: (N: Int64);
end;
var
T: FILETIME;
begin
Win32Check(GetSystemTimeAsFileTime(T));
FILETIMEEX(T).N:=FILETIMEEX(T).N+100*1000*1000
end;
Страницы: 1 вся ветка
Текущий архив: 2007.01.07;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.046 c