具有Kind = dtkDate的TDateTimePicker在Date属性中返回时间分数?

时间:2014-01-08 09:43:06

标签: delphi delphi-xe2 datetimepicker

我的表格上有一个带有Kind = dtkDate的TDateTimePicker 表格打开后我做了

TDateTimePicker.date := Date

我有var lStartDay : TDateTime;并且

lStartDay := DatePickerStart.Date;

我没有在用户界面中触及过TDateTimePicker。

现在,评估/修改(Ctrl-F7)对话框和监视列表(以及悬停在代码上的光标)显示DatePickerStart.Date为8-1-2014,但StartDate为8-1-2014 15:00 :00

当我将监视值DatePickerStart.Date编辑为而不使用可视化工具时,它显示41647,625(我花了一些时间才找到它!)

为什么TDateTimePicker.Date包含时间分数?

1 个答案:

答案 0 :(得分:4)

回答我自己的问题,以防止其他人陷入同一个坑:

事实证明,当你在表单上放置一个TDateTimePicker时,Time属性会被当前时间填充,并且这总是作为DatePickerStart.Date 的一部分返回。我很明显在15:00:00放置了表格

即使您使用TDateTimePicker,时间仍然在'in',因此请选择另一个日期。

所以,要解决此问题:在设计时清除Time属性(它变为00:00:00)和/或总是使用Trunc(TDateTimePicker.Date)或DateOf(TDateTimePicker.Date),当你真的只需要日期

本身, TDateTimePicker.Date不会返回日期!