求两个日期相差年月日,帮我看看程序。

馮強 2002-07-16 11:45:57
procedure TForm1.Button1Click(Sender: TObject);
var
BeDate,EnDate,ReDate:TDateTime;
Year,Month,Day:Word;
begin
BeDate:=StrtoDate(trim(Edit1.Text)+'-'+trim(EDit2.Text)+'-'+trim(Edit3.Text));
EnDate:=StrtoDate(trim(Edit4.Text)+'-'+trim(EDit5.Text)+'-'+trim(Edit6.Text));
if EnDate<BeDate then
Application.MessageBox('开始日期必须小于结束日期!','错误:',MB_OK)
else
begin
ReDate:=EnDate-BeDate;
DecodeDate(ReDate,Year,Month,Day);
Edit7.Text:=InttoStr(Year)+'年'+InttoStr(Month)+'月'+InttoStr(Day)+'天';
end;


end;

比如,开始日期是2001年7月1日,结束日期是2002年7月16日,相减后,应该
返回1年0月15天,但却是1901年0月15天。是不是DecodeDate应用有问题,还是因为系统将01年识别为1901年1月14天??如何改这段程序呢?我不知错在何处?
...全文
77 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
耙子 2002-07-16
  • 打赏
  • 举报
回复
用几年几月几日作为差的笔表示有什么以意思吗?应该用天来表示。

delphi 中,TDateTime是个 双精度浮点数,0 代表 1899/12/30日。
9527 2002-07-16
  • 打赏
  • 举报
回复
你直接相减就可以得到天了,用天做单位不行吗
AV_15 2002-07-16
  • 打赏
  • 举报
回复
实在不行,可以试试用DecodeDate()把两个日期都打散,再分别求差.
(不过麻烦了点!)
馮強 2002-07-16
  • 打赏
  • 举报
回复
唉,这是我书上的一个练习题。不知道出题的人怎么想的。结贴算了。

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧