请问这样的函数该怎么写?(50分)

  • 主题发起人 ~风之彼端~
  • 开始时间

~风之彼端~

Unregistered / Unconfirmed
GUEST, unregistred user!
请问这样的函数该怎么写?:

procedure EntractHoursAndMinuteBetween2DateTimes(Dt1: TDateTimes; Dt2: TDateTime; var Hours: Integer; var Minutes: Integer);

主要功能是将Dt1和Dt2相减,得到差后,将差Entract成Hours和Minuts,但是要求是能用大
于于24的数字描述小时。其实简单的说就是计算Dt1和Dt2之间相隔几小时几分钟。我觉得下
面这样写好像得不到正确答案:

DecodeTime(Dt1 - Dt2,Hours,Minutes,tmp);

因为这样计算,Hours不可能大于24,但是2002年12月31日0点与2003年1月1日1点之间的间
隔应该大于24小时,怎样才能写出正确获得小时和分钟的例程呢?请大虾指教!
 
是否可以这样:
先 ms = MinutesBetween(Dt1,Dt2)
得到两个日期之间相差的分钟数,

h = ms div 60 就是相差的小时数
m = ms mod 60 就是相差的分钟数
 
hours := Trunc((Dt1 - Dt2) * 24);
minutes := Trunc((Dt2 - Dt2) * 24 * 60) mode 60;
 
同意breeze。

uses DateUtils;

procedure TForm1.Button1Click(Sender: TObject);
var
str1,str2:string;
dt1,dt2:TDatetime;
int1,hh1,mm1:integer;
begin
str1 := '2002-12-28';
str2 := '2002-12-29';
dt1 := strtodatetime(str1);
dt2 := now;//strtodatetime(str2);
int1 := MinutesBetween(dt1,dt2);
hh1 := int1 div 60;
mm1 := int1 mod 60;
showmessage(inttostr(int1));
showmessage(inttostr(hh1));
showmessage(inttostr(mm1));
end;

另外,还有 HoursBetween, SecondsBetween , MilliSecondsBetween 等等
 
我下去试试。
 
多人接受答案了。
 
顶部