delphi有没有支持计算两个日期间天数差的函数? 比如两个yyyy-mm-dd形式的日期:1999-2-28 ,2000-3-5,有没有什么函数支持直接计算?还是需要将日期拆分之后自己程序手动计算? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有,不过只有delphi6和以上的版本才支持。 有~~~FAINT说说是那一个啊,急啊,谢谢 在dateutils单元中有,DaysBetween(const ANow, AThen: TDateTime):integer 直接转换成日期型就可以了啊var Day1,Day2:TDateTime;begin Day1 := StrToDate('2003-03-05'); Day2 := StrToDate('1999-02-28'); showmmessage('两个日期差为'+FormatFloat('0',Day1-Day2));end; hehe,我也是刚知道有,谢谢楼上。 大哥说笑吧,既然能用两个日期行相减那DELPHI中还提供函数干什么啊?斑竹啊,我记不清了,但我可以告诉你在哪查。在DELPHI6实务经典的最后几页中介绍了关于DELPHI6中的日期行的所有函数,你可以到那里面去看。 没有说笑,如果是天数就是直接相减,稍微有一点点研究精神,OK?TDateTime不过是个双精度浮点数,整数部分记录日期,小数部分记录时间,那做为日期数据最小单位的天数的差自然可以通过相减得出.封装成函数只是为了提高代码的可维护性和可读性.VCL中这种实现这种简单功能的函数多的是. 没错,我试验了。 aimin(天剑) 和 niat97222(Freeman)的方法都正确。我还特意挑了个闰年算的,一点问题都没有。其实看看DaysBetween(const ANow, AThen: TDateTime):integer;的源码,就是niat97222(Freeman)说得算法。不得不佩服vcl的强大,像这种例子多得是,strtoint('$F2BC45')就可以巧妙的实现数制转换。 先转换成TDATETIME类型,再相减 daysbetween 函数返回的是两个日期之间相差的整数天数,当其差值小于一天时将返回0值,所以楼主如果要得到的是具体的时间差;恐怕还要再自己另外写函数才行;^_^ 其实直接用2个时期减就行了。如果你做成函数封装的话。function a(Day1 :TDateTime,Day2 : TDateTime);var Day1,Day2:TDateTime;begin Day1 := StrToDate('2003-03-05'); Day2 := StrToDate('1999-02-28'); return (Day1-Day2);end; 错了错了。是:function a(Day1 :TDateTime,Day2 : TDateTime);var Day1,Day2:TDateTime;begin return (Day1-Day2);end; Undeclared identifier: 'Translate' 一个对日外包项目的困惑!! 我想请问BCB和DELPHI有什么相同之处! 求关于Delphi电子书下载的地址! 键盘在delphi的值 小妹请教各位大侠(急用)? PostMessage消息的制定资料 一个mdi应用程序中子窗体关闭时候的错误 谢谢hzb的回答,我的问题未解决,请再帮我看看。 关于ODBC讨论。 怎么用 install s for delphi 或者 wise 做安装程序时候 怎么用install s for delphi或者wise 做安装程序时候注册.ocx 和dll文件
var
Day1,Day2:TDateTime;
begin
Day1 := StrToDate('2003-03-05');
Day2 := StrToDate('1999-02-28');
showmmessage('两个日期差为'+FormatFloat('0',Day1-Day2));
end;
我还特意挑了个闰年算的,一点问题都没有。
其实看看DaysBetween(const ANow, AThen: TDateTime):integer;的源码,就是niat97222(Freeman)说得算法。不得不佩服vcl的强大,像这种例子多得是,strtoint('$F2BC45')就可以巧妙的实现数制转换。
function a(Day1 :TDateTime,Day2 : TDateTime);
var
Day1,Day2:TDateTime;
begin
Day1 := StrToDate('2003-03-05');
Day2 := StrToDate('1999-02-28');
return (Day1-Day2);
end;
function a(Day1 :TDateTime,Day2 : TDateTime);
var
Day1,Day2:TDateTime;
begin
return (Day1-Day2);
end;