delphi 7.0 DateTimePicker控件相同日期比较的问题

delphi 7.0  DateTimePicker控件相同日期比较的问题
2011-03-19         作者:李海彬   阅读:547

        DateTimePicker控件作为日期时间控件,在DELPHI中使用得很广泛的,它根据KIND属性可设置为日期控件(dtkDate)或时间控件(dtkTime),我一直认为,将它设置为日期控件时,与时间是无关的,可是在实际应用中,发现并不是这样。
    比如下面的这一个程序,两个 DateTimePicker分别用于设置查询数据的起始日期和终于日期,要执行查询时,要求起始日期不能大于终止日期,否则弹出错误提示,可是在两个 DateTimePicker设置的日期相同时,按下[查询]按钮后,却发现也提示错误了。

                       
   代码如下:

procedure TForm1.Button1Click(Sender: TObject);
begin
  //如果起始日期>终于日期,提示错误:
  if datetimepicker1.date>datetimepicker2.Date then
         Messagebox(handle,'查询起始日期不能大于终于日期','错误',MB_OK);
end;

从上面的代码我们可以看到,用于比较的是datetimepicker.DATE,即一个日期型的数值,而大家也可以看到,日期是相同的,可是在程序执行时,得到的结果是datetimepicker1.date大于datetimepicker2.Date。
    经检查,发现datetimepicker1.Time=20:10:23,datetimepicker2.Time=17:20:21,即两个的Time值是不同的,而且datetimepicker1.Time大于datetimepicker2.Time,是这个原因吗?试着将这两个时间都设成00:00:00,再运行同样的代码,发现不再提示错误。
    结论:datetimepicker.date在进行日期比较时,并不是仅仅比较日期,而对时间也进行比较,这是一个很令人难以理解的结果,但事实如此。

原文地址:https://www.cnblogs.com/hssbsw/p/2533074.html