Delphi TDateTime 日期时间值的比较


本文整理自网络,侵删。

 
编程中,对日期类型TDateTime、TDate、TTime之间的比较和判断,很是棘手。依据本人经验,写了一个比较函数,使用中比较上手。说明如下:

1、时间TDateTime相当于是Double,即双精度数64位,它用11位表示e,53位表示精度(整数小数一起),最前面一位表示正负。

2、TDateTime的整数部分:1天=1,标准日期值,0表示公元1899-12-30,当整数部分大于0,由标准日期累加天数,小于0由由标准日期累加天数。

3、小数部分:1/1000秒=0.00000001,0 表示一天的 00:00:00 000。通过累加0.00000001计数毫秒,递加时分秒。

4、比较两个时间值,检测二值相等,只要二时间差的绝对值<0.00000001即可。这个值如果精确范围,应该是0<X<0.000000099999999。


函数定义如下:

function DataTimeCompare(D1,D2:TDateTime):integer;  // 0等于 1大于 -1小于
var k:Double;
begin
  Result:=0;
  K:=abs(D1-D2);
  if (K>=0) and (K<0.0000000099999999) then Result:=0
  else begin
     if (D1-D2)>=0 then Result:=1
                   else Result:=-1;
  end;
end;
参数TDateTime类型,同时TDate和Time,均可使用。

procedure TForm1.Button1Click(Sender: TObject);
var mydate1,mydate2,mydate3,mydate4: TDateTime;
    T1,T2:TTime;
 
begin
  T1 := EncodeTime(0, 0, 0, 0);
  T2 := EncodeTime(0, 0, 0, 1);
 
  mydate1 := EncodeDateTime(2018, 10, 1, 0, 0, 0, 0);
  mydate2 := EncodeDateTime(2018, 10, 1, 0, 0, 0, 1);
  mydate3 := EncodeDateTime(2018, 10, 1, 0, 0, 0, 2);
  Edit1.text:=Format('%.8f', [mydate1]);
  Edit2.text:=Format('%.8f', [mydate2]);
  Edit3.text:=Format('%.8f', [mydate3]);
  Showmessage(IntToStr(DataTimeCompare(mydate1,mydate1)));
  Showmessage(IntToStr(DataTimeCompare(mydate2,mydate1)));
  Showmessage(IntToStr(DataTimeCompare(mydate1,mydate2)));
                                                          }
  Showmessage(IntToStr(DataTimeCompare(T2,T2)));
  Showmessage(IntToStr(DataTimeCompare(T1,T2)));
  Showmessage(IntToStr(DataTimeCompare(T2,T1)));
end;
注意单元中,加入Uses DateUtils,
――――――――――――――――

原文链接:https://blog.csdn.net/lyhoo163/article/details/82820263

相关阅读 >>

Delphi 判断网站文件是否存在

Delphi真正实现延时暂停功能

Delphi共享软件防破解的实用方法

Delphi 2009 泛型容器单元(generics.collections)[1]: tlist<t>

Delphi idhttpserver使用注意问题

Delphi 内存中加载dll

Delphi tstringlist 用法详解

Delphi根据输入日期按年月周日输出日期段

Delphi xe10 针对全面屏手机端无法全面显示,下方显示黑条的处理

Delphi 实现代码重启android app

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



打赏

取消

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

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

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

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

评论

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