时间差怎么求?(50分)

  • 主题发起人 主题发起人 xingxing3
  • 开始时间 开始时间
X

xingxing3

Unregistered / Unconfirmed
GUEST, unregistred user!
已知两个TDateTime类型的变量,如何获知他俩相差多少天,
多少小时,多少分,多少秒,多少。。? 有没有相关的函数?
 
直接相减
 
trunc(date1-date2);
 
好象没有相关函数,但可以自己定义
type TDateDiff=record
days,hours,minutes,seconds,mseconds:integer;
end;
function GetDateDiff(const Date1,Date2:TDateTime):TDateDiff;
var Diff:TDateTime;
temp:TDateDiff;
begin
Diff:=abs(Date1-Date2);
temp.days:=trunnc(Diff);
Diff:=(Diff-temp.days)*24;
temp.hours:=trunnc(Diff);
Diff:=(Diff-temp.hours)*60;
temp.minutes:=trunnc(Diff);
Diff:=(Diff-temp.minutes)*60;
temp.seconds:=trunnc(Diff);
Diff:=(Diff-temp.seconds)*1000;
temp.mseconds:=trunnc(Diff);
Result:=temp;
end;

 
可用decodedate和decodetime来实现:
var
datetime1,datetime2:Tdatetime;
year1,month1,day1,hour1,min1,sec1,msec1:word;
year2,month2,day2,hour2,min2,sec2,msec2:word;
begin
decodedate(datetime1,year1,month1,day1);
decodedate(datetime2,year2,month2,day2);
decodetime(datetime1,hour1,min1,sec1,msec1);
decodetime(datetime2,hour2,min2,sec2,msec2);
{下面可自己利用加减乘除计算了,呵呵!}
end;
 
agree with kang_en
 
datetime类型实际上是一个双精度的实型变量,欲求两者之差,直接相减就行了
 
type TDateTime = typedo
uble;
Following are some examples of TDateTime values and their corresponding dates and times:
0 12/30/1899 12:00 am
2.75 1/1/1900 6:00 pm
-1.25 12/29/1899 6:00 am
35065 1/1/1996 12:00 am
 
时间变量吗?直接相减取整即可。
 
去试试直接相减
 
trunc(date1-date2);
or trunc(date1)-trunc(date2);
通常用此表示天数差!
两种不同的理解方式!看你怎么理解。
其实date1-date2是精确的时间差,用decodedate和decodetime
直接解开就可以了。(但这仅仅表示时间差,切不可以为是绝对的时间,以前有过类似的问题)
 
直接相减
rDate:real;
rDate:=date1-date2;
rDate:整数部分表示天数;小数部分表示时数;
如rDate:=0.3125表示7.5小时;
rDate:=1表示24小时;
 
powerbuider有直接相减的函数,Delphi的好象没有。
 
谢谢各位!
》Kang的方法:正确。谢谢kang! (trunnc应为trunc)
》Kang_en 的方法:如果要求相差的天数,而两个decodedate之差
大于365,那天数如何计算?(闰年,还有月分30,31天)?是不是很麻烦?
可以给分了吗?
 
>>WuWZY
我的意思是用decodedate解出是含有年月的信息,要将年月转换成day还要
考虑闰年和大小月,比较麻烦。求时间差还是不要用decode*来得好。。。
。。不知是不是我理解上还有问题,请多指教!
 
两个日期相减后,相差1为一天(24小时),0.5为12小时。5.25则为5天6小时.
>>如果要求相差的天数,而两个decodedate之差 大于365,那天数如何计算?
>>(闰年,还有月分30,31天)?是不是很麻烦
相差的天数是没有什么闰年不闰年吧?它并不代表什么年份,如1900,1800等。375天没有理由是公元2年(没有公元0年)的第10天吧?
 
后退
顶部