delphi计算两个时间差


本文整理自网络,侵删。

 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, H, M, S]); //%.2d没有两位补全,若没有'.'则显示实际位数
memo1.Lines.Add(caption);
end;
  

经过上面可以实现两个时间相减的功能,然后将其写成函数为:


function GetSubDateTime(S1, S2:string): string;
var
  T1, T2: TDateTime;
  D, H, M, 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',[D, H, M, S]);
end;<br><br>调用:<br>var<br>Caption: string;<br>begin<br>  Caption := GetSubDateTime(S1, S2);<br>  memo1.liens.add(Caption);<br>end;
上面就可以直接调用函数计算差值,若要想计算动态的时间差值就使用一个计时器Timer,代码如下:


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;

相关阅读 >>

Delphi 给变量加引号

Delphi 判断字符串是否为纯数字组合

Delphi pagecontrol不�@示tab方式

Delphi 大小写字符串转换

Delphi memo1文本搜索并高亮

Delphi的unicode与gb2312转转换,汉字unicode转gb2312

Delphi获取机器的mac地址

Delphi的rtti实现对象的xml持久化

Delphi操作excel说明

Delphi 获取当前系统语言环境(en,fr,ja等)

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...