TDateTimePicker和Date

时间:2015-03-18 18:31:01

标签: delphi datetimepicker

对于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分钟后再次按下,我会得到相同的结果。 为什么值不一样?

3 个答案:

答案 0 :(得分:6)

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

TDateTimePicker.Date属性设置器仅更新内部存储的TDateTime的日期部分,使现有时间保持不变。 TDateTimePicker.Date属性getter返回整个内部存储的日期/时间,而不是像预期的那样返回日期。因此,您会看到更新日期+ TDateTimePicker初始化的原始时间。

答案 1 :(得分:1)

  • TDateTimePicker.DateTDateTimePicker.Time属性getter返回完整的日期/时间值,尽管它们的名称。另一方面,属性设置器分别仅按预期更新日期和时间部分。
  • Date()函数返回一个TDateTime,它只包含一个日期部分,没有时间部分。

要仅检索日期部分,您可以使用DateOf()单元中的DateUtils函数去除TDateTimePicker.Date或{{返回的值的时间部分1}}属性:

TDateTimePicker.DateTime

答案 2 :(得分:0)

将Datepicker1.Time设置为0,您将获得相同的结果。 它是你在小数点看到的白天过去的一小部分。