5

我是Delphi编程新手。在浏览Data TypesDelphi我发现TDateTime.

在我的测试应用程序中使用它时,我知道TDateTimeObject 为我提供了一个Float\Double值。

TDateTime对它如何计算Date TimetoDouble值有点好奇。

以下是我使用的示例代码:

var
  LDateTime: TDateTime;
  LFloat: Double;
begin
   LDateTime := now;// current DateTime
   LFloat:= LDateTime; // provide me a float value   
end;

它是否使用任何公式Date and Time Value从 Windows 计算?

任何人都可以建议/向我提供有关工作的更多信息TDateTime吗?

提前致谢。

4

2 回答 2

13

浮点数表示自 1899 年 12 月 30 日以来的天数。所以 float value = 1 将是 31.12.1899, 2 = 01.01.1900 等等。时间被保存为一天的一小部分。0.25 = 06:00, 0.5 = 12:00, 0.75 = 18.00 ...

所以 31.12.1899 12:00 将等于 1.5。

这使得 TDateTime 非常容易使用。要获得天数的差异,只需减去两个 DateTimes。

02.01.2015 - 01.01.2015 = 1

尽可能简单。要获得小时数的差异,只需乘以 24。

还可以查看 Unit DateUtils 中的函数。它们有时会派上用场。

于 2015-01-28T05:36:58.513 回答
1

你正在寻找

function DateTimeToUnix(const AValue: TDateTime): Int64;

function UnixToDateTime(const AValue: Int64): TDateTime;

函数来自DateUtils.pas

TDateTime值可以通过FormatDateTime函数格式化

//uses sysutils

var    
  k:double;    
  t:tdatetime    
begin    
  t:=UnixToDateTime(1483909200);    
  showmessage(datetostr(t));    
  t:=strtodate('08.01.2017');    
  k:=DateTimeToUnix(t);    
  showmessage(k.ToString);    
end;
于 2017-08-22T10:48:46.890 回答