Delphi - 为什么TDate和TDateTime一样?

use*_*275 0 delphi tdatetime

在查看System.pas时,TDate和TDateTime定义如下:

  TDateTime = type Double;

  TDate = type TDateTime;
  TTime = type TDateTime;
Run Code Online (Sandbox Code Playgroud)

显然TDate和TDateTime是一样的.

我只是努力与TDate和TDateTime合作,因为我预计TDate只包含日期部分,而不是时间部分.

现在我想知道:这背后的意义是什么?当我将变量声明为TDate时,它应该包含一个日期,而不是一个数据和一个时间值.

And*_*and 8

他们不一样.如果声明已经

TDate = TDateTime;
TTime = TDateTime;
Run Code Online (Sandbox Code Playgroud)

他们曾经是相同的.除了type它们之外,虽然它们在技术上仍然相同,即它们仍然double是s,但它们可以分开讲述.例如,这使得可以在Object Inspector中为两种类型(分别是日期选择器和时间选择器)使用不同的属性编辑器,而您可以使用"日期时间"选择器TDateTime.

此外,即使不是这样,为不同的目的使用不同的"别名"也许是好的.这可能会使您的源代码更容易理解.例如,如果你这样做

var
  StartTime: TDate;
Run Code Online (Sandbox Code Playgroud)

然后你知道StartTime它只包含有关日期的信息,而不包含时间(除非你滥用规范).

  • 此外,在声明 TDate 时,您不能将 TDateTime 用作实际的 var 参数。 (2认同)