close

讀取網路時間 使用 idSNTP

來源網址 https://stackoverflow.com/questions/4297242/get-internet-time-in-delphi

function TForm1.GetRealTime: TDateTime;
var
  SNTPClient: TIdSNTP;
begin
  SNTPClient := TIdSNTP.Create(nil);
  try
    SNTPClient.Host := 'pool.ntp.org';
    Result := SNTPClient.DateTime;
  finally
    SNTPClient.Free;
  end;
end;

 

設定本機時間

procedure TForm1.XBSetLocalTime(DT: TDateTime);
var
  newTime : TSystemTime;
  y,m,d,h,n,s,z: word;
begin
  try
    DecodeDate(DT,y,m,d);
    DecodeTime(DT,h,n,s,z);

    newTime.wYear := y;
    newTime.wMonth := m;
    newTime.wDayOfWeek := DayOfWeek(DT);
    newTime.wDay := d;
    newTime.wHour := h;
    newTime.wMinute := n;
    newTime.wSecond := s;
    newTime.wMilliseconds := z;
    SetLocalTime(newTime);
    SendMessage(HWND_TOPMOST, WM_TIMECHANGE, 0, 0);
  except
    Showmessage('設定時間失敗')
  end;
end;

 

TDatetime 加減時間

來源網址 http://www.programmer-club.com.tw/ShowSameTitleN/delphi/19826.html

d1, d2: TDateTime;
d1 := d2 + EncodeDate(1, 0, 0); // d2 的時間加一年
d1 := d2 + EncodeDate(0, 1, 0); // d2 的時間加一個月
d1 := d2 + EncodeDate(0, 0, 1); // d2 的時間加一天
d1 := d2 + EncodeTime(1, 0, 0, 0); // d2 的時間加一小時,最大到23小時
d1 := d2 + EncodeTime(0, 1, 0, 0); // d2 的時間加一分鐘
d1 := d2 + EncodeTime(0, 0, 1, 0); // d2 的時間加一秒
d1 := d2 + EncodeTime(0, 0, 0, 1); // d2 的時間加一毫秒,加1000次才等於一秒

 

時間相減

DateUtils单元中的SecondsBetween

arrow
arrow
    文章標籤
    NTP TDateTime
    全站熱搜

    抓狂小白 發表在 痞客邦 留言(0) 人氣()