1. 程式人生 > WINDOWS開發 >delphi計算兩個時間差-轉

delphi計算兩個時間差-轉

usesDateUtils; var S1,S2:string; T1,T2: TDateTime; D,H,M,S:Integer; Value:Int64; begin S1 :=‘2015/09/23 15:44:50‘; S2 :=‘2013/09/22 16:47:51‘; T1 := StrToDateTime(S1); T2 := StrToDateTime(S2); Value := SecondsBetween(T1,T2); D := ValuedivSecsPerDay;// 取一天有多少秒 H := ValuemodSecsPerDaydivSecsPerHour;
// 取一天有多少秒 M := ValuemodSecsPerDaymodSecsPerHourdivSecsPerMin; S := ValuemodSecsPerDaymodSecsPerHourmodSecsPerMin; Caption := Format(‘%.2d天 %.2d:%.2d:%.2d‘,[D,S]);//%.2d沒有兩位補全,若沒有‘.‘則顯示實際位數 memo1.Lines.Add(caption); end;

  

經過上面可以實現兩個時間相減的功能,然後將其寫成函式為:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 functionGetSubDateTime(S1,S2:string):string; var T1,T2: TDateTime; D,S:Integer; Value:Int64; begin T1 := StrToDateTime(S1); T2 := StrToDateTime(S2); Value := SecondsBetween(T1,T2); D := ValuedivSecsPerDay; H := ValuemodSecsPerDaydivSecsPerHour; M := ValuemodSecsPerDaymodSecsPerHourdivSecsPerMin;
S := ValuemodSecsPerDaymodSecsPerHourmodSecsPerMin; result := Format(‘%.2d天 %.2d:%.2d:%.2d‘,S]); end;<br><br>呼叫:<br>var<br>Caption:string;<br>begin<br> Caption := GetSubDateTime(S1,S2);<br> memo1.liens.add(Caption);<br>end;

上面就可以直接呼叫函式計算差值,若要想計算動態的時間差值就使用一個計時器Timer,程式碼如下:

1 2 3 4 5 6 7 8 9 procedureTForm2.Timer1Timer(Sender: TObject); var S1,S2:string; begin S1 := FormatDateTime(‘yyyy/mm/dd hh:mm:ss‘,now());// 我用的XE,所以提前出來的系統時間是這種格式 S2 :=‘2015/9/22 01:02:03‘;// 這裡時間要和獲取到的系統時間一致 GetSubDateTime(S1,S2); Memo1.Lines.Add(GetSubDateTime(S1,S2)); end;