有两个时间,怎么样得到他们之间的天数(30分)

  • 主题发起人 主题发起人 linzhengqqun
  • 开始时间 开始时间
L

linzhengqqun

Unregistered / Unconfirmed
GUEST, unregistred user!
现有两个时间,比如2004-2-3和2004-5-2
那要怎么样得到这两个时间之间相隔的天数呢。
 
uses DateUtils
function daysbetween
 
Returns the number of whole days between two specified TDateTime values.

Unit

DateUtils

Category

datetime routines

Delphi syntax:

function DaysBetween(const ANow, AThen: TDateTime): Integer;

C++ syntax:

extern PACKAGE int __fastcall DaysBetween(const System::TDateTime ANow, const System::
TDateTime AThen);

Description

Call DaysBetween to obtain the difference, in days, between two TDateTime values.

DaysBetween counts only whole days. Thus, DaysBetween reports the difference between Dec 31, 1999 11:59 PM and Jan 1, 2000 11:58 PM as 0 because the difference is one minute short of an entire day.
 
trunc(datetime1-datetime2)
 
试了一下,关于daysBtween这个函数,如果是同年同月,不同日,算出来就是正确的
比如2003-2-1和2003-2-25,这两个时间算后得出的24
但如果是2003-2-1和2003-3-1得出来的竟然是1
而如果是2003-2-1和2003-3-5得出来的竟然是5,就是日数间隔,再加上月数间隔结果为5。
而trunc也是一样的结果,只是正负倒了过来了。
请大家试一下,有没有解决的办法。就是2003-3-2和2003-2-1之间的天数应该是30。
 
procedure TForm1.BitBtn1Click(Sender: TObject);
var
a: Tdate;
b: Tdate;
begin
a := strtodate(MaskEdit1.Text);
b := strtodate(MaskEdit2.Text);
Edit3.text := floattostr(b - a);
end;
 
相减取整
 
Delphi的帮助里说两个TDateTime型的变量整数部分相减就是两个日期之间相隔的天数,这个肯定没错。
 
TDateTime 实际上是 浮点数 整数部分是日期,小数部分是,时间有此为证: [:D]
unit System;
TDateTime = type Double;
unit Controls;
TDate = type TDateTime;
实际您在代码里面写一个TDateTime,按住Ctrl不放,然后用鼠标点一下,
就会跑到他定义的位置

所以,(整数部分)直接相减应该就可以了,最好把小数部分先给0。我猜想,TDate 可能只使用整数部分。
 
多人接受答案了。
 
后退
顶部