关于日期计算问题

lovelwx 2002-11-12 10:35:35
您们好!请问如何计算两个不同日期之间的隔离的天数?或者某一个日期之后的N天后的日期是什么?例如:从2002-11-12起180后的日期是什么;或者2002-11-12至2003-05-01之间隔离的天数是多少?
...全文
52 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangchinaking 2002-11-20
  • 打赏
  • 举报
回复
function DaysBetween(const ANow, AThen: TDateTime): Integer;
返回整天数目,例如,1999-12-31 23:59:00到2000-1-1 23:58:00
它将返回0,因为它还不足一天。:)
相反,
function DaySpan(const ANow, AThen: TDateTime): Double;
将返回不完整的天数,例如,刚好一天就返回1,如果不足一天
则可能返回0.9天或0.8天或0.5天等等。:)
pandarus 2002-11-12
  • 打赏
  • 举报
回复
太詳細了.
shuixin13 2002-11-12
  • 打赏
  • 举报
回复
:》
oracle_lover 2002-11-12
  • 打赏
  • 举报
回复
日期有两种:TDate, TDateTime
无论是哪一种,在系统中都是以双精度浮点数(Double)的形式存储的。所以日期之间可以直接加减。
1. 两天之间的天数:
var myDate1,myDate2:TDate;
begin
myDate1:=StrToDate('2002-1-1');
myDate2:=StrToDate('2002-8-8');
Edit1.text:=IntToStr(Round(myDate1-myDate2));
end; //Round()是四舍五入取整
2. 某个日期180天后的日期
var myDate1,myDate2:TDate;
begin
myDate1:=StrToDate('2002-11-12');
myDate2:=myDate1+180;
Edit1.Text:=DateToStr(myDate2);
end;
3. 如果日期是TDateTime类型的(日期+时间)
相应的日期操作为:DateTimeToStr(),StrToDateTime()等
计算两个DateTime之间的小时差,相减结果*24,然后取整
计算两个DateTime之间的分钟差,相减结果*24*60,然后取整
计算两个DateTime之间的秒差,相减结果*24*60*60,然后取整
flinming 2002-11-12
  • 打赏
  • 举报
回复
时间处理的秘密
TDateTime类型实际上就是一个double(双精度数). 整数部分是日期小数部分是时间。例如

var
DateTime : TDateTime;
Date : TDateTime;
Time : TDateTime;
begin
DateTime := now;
//获得日期
Date := Trunc( DateTime );
//获得时间
Time := Frac( DateTime );
end;

日期运算
如果你想增加几天,只需要加一个天数就可以了

var
DateTime : TDateTime;
begin
DateTime := now;
//七天以后
DateTime := DateTime + 7;
end;

想要知道两个日期的差距,只需要互相减一下就可以了。

var
StartTime, StopTime, Difference : TDateTime;
begin
Difference := StopTime - StartTime;
end;


bluemeteor 2002-11-12
  • 打赏
  • 举报
回复
从2002-11-12起180后的日期是什么

var
now,next:DateTime ;
......
now:=strtodatetime('11/12/02');//(MM/DD/YY HH:MM:SS)
next:=now+180;
xzhifei 2002-11-12
  • 打赏
  • 举报
回复
var
day1,day2:TDateTime;

begin
showmessage(IntTOStr(Round(Day1-day2)));
end;
bluemeteor 2002-11-12
  • 打赏
  • 举报
回复
还有
function DaySpan(const ANow, AThen: TDateTime): Double
bluemeteor 2002-11-12
  • 打赏
  • 举报
回复
计算两日期间天数
必须在USES里引用DateUtils单元
edit1.text:=inttostr(daysbetween(strtodate('2002-11-01'),strtodate('2002-11-12')));

1,181

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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