TDateTimePicker和Date

REA*_*OFO 2 delphi datetimepicker

对于Delphi XE7中的一个奇怪的DatetTimePicker来说,这是一个简单的问题.

我有这个代码......

procedure TForm1.Button1Click(Sender: TObject);
begin
  DateTimePicker1.Date:= Date;
  memo1.Lines.Add(FloatToStr(Date) + ' vs ' + FloatToStr(DateTimePicker1.Date));
end;
Run Code Online (Sandbox Code Playgroud)

今天,2015年3月18日,按下按钮后,我得到的结果是:

42081 vs 42081.846316956
Run Code Online (Sandbox Code Playgroud)

如果我在5分钟后再次按下,我会得到相同的结果.为什么价值观不一样?

RRU*_*RUZ 6

Date()函数截断返回值的小数部分(将时间部分设置为0).因此它只返回填写日期的当前日期/时间.

TDateTimePicker.Date属性setter只更新存储在内部的日期部分TDateTime,保留现有的时间不变.该TDateTimePicker.Date属性的getter自行返回整个内部存储的日期/时间,没有日期,正如人们所期望的那样.因此,您将看到更新日期+初始化的原始时间TDateTimePicker.