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; 调用:
var
Caption: string;
begin
Caption := GetSubDateTime(S1, S2);
memo1.liens.add(Caption);
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计算两个时间差的更多相关文章

  1. JS计算两个时间差的问题

    计算两个时间差的问题 function getDateIsMatching(){ var pactbegindate=$("#loanbegindate").datetimebox ...

  2. 问题:C#时间差;结果:C# 使用TimeSpan计算两个时间差

    C# 使用TimeSpan计算两个时间差 可以加两个日期之间任何一个时间单位. private string DateDiff(DateTime DateTime1, DateTime DateTim ...

  3. PHP计算两个时间差的方法

    <?php //PHP计算两个时间差的方法 $startdate="2010-12-11 11:40:00"; $enddate="2012-12-12 11:45 ...

  4. js计算两个时间差 天 时 分 秒 毫秒

    // 计算两个时间差 dateBegin 开始时间 function timeFn(dateBegin) { //如果时间格式是正确的,那下面这一步转化时间格式就可以不用了 var dateEnd = ...

  5. bat计算两个时间差

    这个是脚本代码[保存为etime.bat放在当前路径下即可: 免费内容: :etime <begin_time> <end_time> <return>rem 所测 ...

  6. js 计算两个时间差

    /* * 计算两个日期的间隔天数* BeginDate:起始日期的文本框,格式為:2012-01-01* EndDate:結束日期的文本框,格式為:2012-01-02* 返回兩個日期所差的天數* 調 ...

  7. delphi 判断两个时间差是否在一个指定范围内

    WithinPastYears.WithinPastMonths.WithinPastWeeks.WithinPastDays ... 判断两个时间差是否在一个指定范围内DateUtils.Withi ...

  8. javascript计算两个时间差

    其实,javascript计算时间差的方式非常简单,如果是默认的Date()类型,直接相减就是相差的毫秒数. var d1 = new Date('2016/03/28 10:17:22'); var ...

  9. java中计算两个时间差

    java计算时间差及比较时间大小 比如:现在是2004-03-26 13:31:40 过去是:2004-01-02 11:30:24 我现在要获得两个日期差,差的形式为:XX天XX小时XX分XX秒 方 ...

随机推荐

  1. Oracle LSNRCTL------监听器的启动和关闭

    对于DBA来说,启动和关闭oracle监听器是很基础的任务,但是Linux系统管理员或者程序员有时也需要在开发数据库中做一些基本的DBA操作,因此了解一些基本的管理操作对他们来说很重要. 本文将讨论用 ...

  2. java中绘制长方形,椭圆形,圆形的方法

    总结:方法,main函数的作用你还没搞清楚 //画一个矩形 import java.awt.*; import javax.swing.*; public class Test2 extends JF ...

  3. hdu 5706 GirlCat(BFS)

    As a cute girl, Kotori likes playing ``Hide and Seek'' with cats particularly. Under the influence o ...

  4. PHP实现日志写入log.txt

    引言:有时候调试,看不到效果,需要通过写入文件来实现. 案例: <?php $myfile = fopen("log.txt", "a+") or die ...

  5. python's eleventh day for me

    python2 中没有nonlocal. 函数名是什么? 函数名就是函数的名字, 本质:变量,特殊的变量. 1.单独打印函数名: def func(): print(666) print(func) ...

  6. C过程思想,根据需求写方法就行

     实现的方法有多种 Comprehensive orientate 2017/10/27 13:25:07 C过程思想,根据需求写方法就行  

  7. flask ---映射到数据库

    在当前项目文件下:运行cmd指令(terminal中)  (1)python manage.py db init ----初始化文件  (2)python manage.py db migrate-- ...

  8. 「小程序JAVA实战」微信小程序工程结构了解(五)

    转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-05/ 微信小程序工程结构 audio,button,canvas,checkbox 都是由4个文件 ...

  9. Easyui Datagrid 如何实现后台交互显示用户数据列表

    转自:https://blog.csdn.net/Tomsheng321/article/details/50722571?utm_source=blogxgwz9 新手初学的时候可能有个疑问:如何在 ...

  10. CentOS 调用.Net 的Web Service,提示连接超时解决方案

    我是使用axis调用.NET 的Web Service ,在Window下跑没有问题,将项目部署到Linux下,发现Web Service 连接超时,百度了下,发现是因为Linux不能直接跑.Net, ...