Здравствуйте!
Подскажите пожалуйста каким образом из Лазаруса можно установить системную дату-время?
Lazarus 0.9.26, FPC 2.2.2
XUbuntu (Linux 2.6.24-23-generic).
Модератор: Модераторы
uses
BaseUnix;
var tz: timezone;
tv: timeval;
begin
tz.tz_minuteswest := -2;//смещение на запад от Гринвича
tz.tz_dsttime := 0;//летнее время
tv.tv_sec := 60; //секунды от 00:00, 1 января 1970
tv.tv_usec := 00;//милисекунды
fpsettimeofday(@tv, @tz);
// fpgettimeofday(@tv, @tz); //взять системное время, полезно поизучать, как нужно инииализировать переменные
//Весь инструментарий для обработки этого удовольствия в модуле "dateutils" - не нужно морочить голову с вычислениями. Там преобразования туда-сюда и обратно.
end.
uses WinTypes, SysUtils, ShellApi ;
function SetDate(tDati: TDateTime): Boolean;
var
tSetDati: TDateTime;
vDatiBias: Variant;
tTZI: TTimeZoneInformation;
tST: TSystemTime;
H,M,S,Ms : word ;
begin
GetTimeZoneInformation(tTZI);
vDatiBias := tTZI.Bias / 1440;
DecodeTime(time,H,M,S,Ms) ;
tSetDati := tDati + vDatiBias + encodetime(H,M,S,Ms) ;
with tST do
begin
wYear := StrToInt(FormatDateTime('yyyy', tSetDati));
wMonth := StrToInt(FormatDateTime('mm', tSetDati));
wDay := StrToInt(FormatDateTime('dd', tSetDati));
wHour := StrToInt(FormatDateTime('hh', tSetDati));
wMinute := StrToInt(FormatDateTime('nn', tSetDati));
wSecond := StrToInt(FormatDateTime('ss', tSetDati));
wMilliseconds := 0;
end;
Result := SetSystemTime(tST);
end;
(Sender: TObject);
var
date_:TDateTime;
win_time: tsystemtime;
begin
date_:=StrToDate('01.01.2007');
DateTimeToSystemTime(date_,win_time);
SetSystemTime(win_time);
end;
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 30