为何日期相减总相差37175?(100分)

  • 主题发起人 主题发起人 chemer
  • 开始时间 开始时间
C

chemer

Unregistered / Unconfirmed
GUEST, unregistred user!
请看这段代码:
var day1,day2:tdatetime;
dd:integer;
...
day1:=01-11-1;
day2:=date;
dd:=trunc(day2)-trunc(day1);
...

为何得到的结果总和实际结果差37175?
比如date是01-11-13那么dd应该等于12为什么会是37187(=12+37175)?
是不是我的代码有问题?
谢谢!
 
我好像记得日期不是这么相减的……
可惜我现在手头没有这东东,如果明天还没有人答你,我会给你找到的(我只能晚上上网)
 
type ;TDateTime = type Double;

Description

Most VCL objects represent date and time values using the TDateTime type. The
integral part of a TDateTime value is the number of days that have passed since
12/30/1899. The fractional part of a TDateTime value is fraction of a 24 hour
day that has elapsed.

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
To find the fractional number of days between two dates, simply subtract the
two values. Likewise, to increment a date and time value by a certain fractional
number of days, simply add the fractional number to the date and time value.
 
试试!
dd:=Trunc(day2-day1);
 
判断为1901了
 
day1:=01-11-1; ;//这行有错,day1等于1减去11再减去1,就是-11。
相当于 1899 年 12 月 19 日。
改成
day1:=strtodate('01-11-1');
 
Delphi中表示时间通常使用TDateTime类型,这个类型实际上是Double类型。
整数部分表示自12/30/1899以来的天数,而小数部分是将不足一天的部分除以24小时,
如上午6点是0.25。要进行时间运算只需要直接进行加减就可以了。
var
;day1,day2:tdatetime;
begin
;day1:=strtodate('2001-10-01');
;day2:=date;
;edit1.text:=inttostr(trunc(day2-day1));
end;
 
DaysBetween(const ANow, AThen: TDateTime): Integer;

Description

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

DaysBetween counts only whole days that have elapsed. 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.
在 delphi 6
 
关于日期的年月日顺序问题我始终搞不懂,"01-10-29"和"10-29-01"、"29-10-01"
是什么关系。
还有"2001-10-29"、"01-10-29"是什么关系?
就行用以上那种日期格式最为标准,Delphi是如何判断和区分这几种日期类型的?
倘若碰上"11-01-01",到底是2001年1月11日,还是2001年11月1日,还是1911年1月1日。

Thanks.[:)]
 
是根据你系统设置的缺省区域来判断的,在控制面板的区域选项里面的日期页里面。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
915
SUNSTONE的Delphi笔记
S
D
回复
0
查看
946
DelphiTeacher的专栏
D
D
回复
0
查看
884
DelphiTeacher的专栏
D
后退
顶部