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);
:= Value div SecsPerDay;                                  // 取一天有多少秒 
:= Value mod SecsPerDay div SecsPerHour;                  // 取一天有多少秒
:= Value mod SecsPerDay mod SecsPerHour div SecsPerMin;
:= 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 自带rest调试工具 restdebugger 用法

Delphi 进程通讯之wm_copydata 发送程序(senddata.exe)

Delphi 条件编译语法 $ifdef $else $endif

Delphi 谷歌api文本转换语音mp3文件

Delphi滚动窗口标题

Delphi判断某一个点是否在一个区域内

Delphi mediaplayer 左声道右声道

Delphi 读取文件的md5值

Delphi 获取毫秒级时间戳

indy 中idhttp元件出现http status 302错误

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



打赏

取消

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

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

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

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

评论

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

    正在狠努力加载,请稍候...