delphi中的tdatatime类型可否与integer类型转换?(20分)

  • 主题发起人 主题发起人 kunhong
  • 开始时间 开始时间
K

kunhong

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi中tdatetime如何同integer数据类型进行转换?转换语句是什么?
 
可以呀
有个函数可以转换的
formatdatetime
 
不行,datetime是double型的,转integer会丢失时间信息
 
用VARIANT类型转换

V:Variant
T:TDateTime
I:Integer
T:=Now;
V:=T;
I:=V;
楼上讲得对,可能会丢失秒数。
 
谢谢楼上的回答,可能是我没有说清楚,如果整个tdatetime无法转换,可否只将tdatetime中的hh数据转换成integer?
 
uses
DateUtils;
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
i := HourOf(now);
Caption := IntToStr(i);
end;
 
同意楼上所说。 delphi 可以取出 小时,分钟,秒。年月日
 
肯定不可以:
sizeof(tdatetime) = 8 而 sizeof(integer) = 4
不过你可以用两个 integer(如 int64) “完全精确”地保存时间:
function DataTimeToInt64(const ADateTime: TDateTime): Int64;
begin
Move(ADateTime, Result, SizeOf(Result));
end;
function Int64ToDataTime(const AInt: Int64): TDateTime;
begin
Move(AInt, Result, SizeOf(Result));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
S, T: TDateTime;
I: Int64;
begin
T := Now;
I := DataTimeToInt64(T);
S := Int64ToDataTime(I);
Caption := BoolToStr(CompareMem(@S, @T, SizeOf(TDateTime)), True);
end;
 
多人接受答案了。
 
后退
顶部