对于Delphi XE7中的一个奇怪的DatetTimePicker来说,这是一个简单的问题。
我有这段代码......
procedure TForm1.Button1Click(Sender: TObject);
begin
DateTimePicker1.Date:= Date;
memo1.Lines.Add(FloatToStr(Date) + ' vs ' + FloatToStr(DateTimePicker1.Date));
end;
今天,2015年3月18日,按下按钮后,我得到的结果是:
42081 vs 42081.846316956
如果我在5分钟后再次按下,我会得到相同的结果。 为什么值不一样?
答案 0 :(得分:6)
Date()
函数截断返回值的小数部分(将时间部分设置为0)。因此,只返回填写日期的当前日期/时间。
TDateTimePicker.Date
属性设置器仅更新内部存储的TDateTime
的日期部分,使现有时间保持不变。 TDateTimePicker.Date
属性getter返回整个内部存储的日期/时间,而不是像预期的那样返回日期。因此,您会看到更新日期+ TDateTimePicker
初始化的原始时间。
答案 1 :(得分:1)
TDateTimePicker.Date
和TDateTimePicker.Time
属性getter返回完整的日期/时间值,尽管它们的名称。另一方面,属性设置器分别仅按预期更新日期和时间部分。Date()
函数返回一个TDateTime
,它只包含一个日期部分,没有时间部分。 要仅检索日期部分,您可以使用DateOf()
单元中的DateUtils
函数去除TDateTimePicker.Date
或{{返回的值的时间部分1}}属性:
TDateTimePicker.DateTime
答案 2 :(得分:0)
将Datepicker1.Time设置为0,您将获得相同的结果。 它是你在小数点看到的白天过去的一小部分。