我的表格上有一个带有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包含时间分数?
答案 0 :(得分:4)
回答我自己的问题,以防止其他人陷入同一个坑:
事实证明,当你在表单上放置一个TDateTimePicker时,Time属性会被当前时间填充,并且这总是作为DatePickerStart.Date 的一部分返回。我很明显在15:00:00放置了表格
即使您使用TDateTimePicker,时间仍然在'in',因此请选择另一个日期。
所以,要解决此问题:在设计时清除Time属性(它变为00:00:00)和/或总是使用Trunc(TDateTimePicker.Date)或DateOf(TDateTimePicker.Date),当你真的只需要日期
本身, TDateTimePicker.Date不会返回日期!。