Delphi如何将TDateTime计算为Float值?

时间:2015-01-28 05:28:56

标签: delphi tdatetime

我是Delphi编程的新手。 通过Data Types Delphi时,我找到了TDateTime

在我的测试应用程序中使用它时,我发现TDateTime对象为我提供了Float\Double值。

我对TDateTime如何计算Date TimeDouble值感到好奇。

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

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

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

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

提前致谢。

2 个答案:

答案 0 :(得分:9)

浮点数代表自1999年12月30日以来的天数。因此浮点值= 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中的函数。它们有时会派上用场。

答案 1 :(得分:0)

您正在寻找

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;