delphi計算兩個時間差-轉
阿新 • • 發佈:2020-04-20
uses DateUtils;
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 := Value div SecsPerDay; // 取一天有多少秒
H := Value mod SecsPerDay div SecsPerHour; // 取一天有多少秒
M := Value mod SecsPerDay mod SecsPerHour div SecsPerMin;
S := Value mod SecsPerDay mod SecsPerHour mod SecsPerMin;
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 |
function GetSubDateTime(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 := Value div SecsPerDay;
H := Value mod SecsPerDay div SecsPerHour;
M := Value mod SecsPerDay mod SecsPerHour div SecsPerMin;
S := Value mod SecsPerDay mod SecsPerHour mod SecsPerMin;
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 |
procedure TForm2 . 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 ;
|