delphi TDateTime类,如何计算两个时间的差?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi TDateTime类,如何计算两个时间的差?相关的知识,希望对你有一定的参考价值。

楼上的说得没错,时间是可以直接相减的
例如
X:=Date2-Date1; //x是相差的天数
Y:=x*24; //Y是相差的小时数
z:=x*24*60; //Z就是相差的分钟数
参考技术A tdatetime是一个double型
假设两个时间分别是Date1,Date2
1、X:=Date2-Date1;
2、X的整数部分表示的是天数
3、X的小数部分表示的是秒数,可以使用DecodeTime( X, Hour, Minute, Second, mSecond )函数分别得到小时、分钟、秒和毫秒
参考技术B 时间直接想减,结果是小数,单位是天

kbmmw 中的日期时间操作

为了精确度反映时间及时区,kbmmw 里面专门有一个单元处理日期时间,由于很多同学习惯了delphi

自带的Tdatetime,使用这个时会有一些疑惑,因此今天就单独说一下这个。

首先kbmmwdatetime 里面使用UTC 时间作为基本计时标准,然后可以转换为其他时区。

Tkbmmwdatetime.Create(now);

这个其实并不是返回我们当前的时区时间。

如果要返回当前时区的时间,有两个方法,

一种是通过ISO8601 标准格式赋值得到,

Tkbmmwdatetime.Create(\'2018-04-30T13:02:15.417+08:00\');

另外一种是通过kbmmw提供的类函数得到

Tkbmmwdatetime.Create( Tkbmmwdatetime.Now) ;

现在通过以下代码说明。

 

procedure TForm1.Button1Click(Sender: TObject);
var
    t1:Tkbmmwdatetime;

    t2:Tkbmmwdatetime;


begin
     t1:=Tkbmmwdatetime.Create(\'2018-04-30T15:27:15.417+08:00\');

    memo1.Lines.Add(\'IOS8601:\'+t1.GetISO8601dateTime)  ;

    memo1.Lines.Add(\'fixedlocal:\'+t1.GetFixedLocalDateTime) ;

    memo1.Lines.Add(\'fixedUTC:\'+t1.GetFixedUTCDateTime) ;

     memo1.Lines.Add(\'TimeZone:\'+t1.GetTimeZone ) ;

    memo1.Lines.Add(\'=========================\');



    t2:=Tkbmmwdatetime.Create( Tkbmmwdatetime.Now) ;
     memo1.Lines.Add(\'iso8601:\'+t2.GetISO8601dateTime)  ;

    memo1.Lines.Add(\'fixedlocal:\'+t2.GetFixedLocalDateTime) ;

    memo1.Lines.Add(\'fixedUTC:\'+t2.GetFixedUTCDateTime) ;

     memo1.Lines.Add(\'TimeZone:\'+t2.GetTimeZone ) ;

    memo1.Lines.Add(\'RFC123UTC:\'+t2.GetRFC1123UTCDateTime ) ;

    memo1.Lines.Add(\'RFC123:\'+t2.GetRFC1123DateTime) ;


    memo1.Lines.Add(\'NCSA\'+ t2.GetNCSADateTime )  ;

    memo1.Lines.Add(\'dayofweek:\'+ kbmMWRFC1123DayNames[t2.DayOfWeek()]) ;

end;

运行结果

 

以上是关于delphi TDateTime类,如何计算两个时间的差?的主要内容,如果未能解决你的问题,请参考以下文章

Delphi Xe 中如何把日期格式统一处理,玩转 TDatetime

delphi中要把时间比如说2011年1月1日12时25秒转换成整型数怎么转换

delphi日期时间比较大小

[Delphi] Delphi Tips

Delphi获取与设置系统时间格式,即GetLocaleInfo和SetLocaleInfo

delphi