2个日期直接相减,就是天数 月按30天算?=(天数 div 30) 月另 (天数 mod 30) 日
DaysBetween不是按30天算的把? 我试过跟days360计算的结果不同
var d1, d2: TDate; begin d1 := StrToDate('2010-1-1'); d2 := StrToDate('2010-12-31'); ShowMessage(FloatToStr(d2 - d1));//结果是364天,如果算上'2010-12-31',那么就是365天。 end;
那就拆分吧,Year,Month,Day分别差几天 function GetDateDiff(FormerDate,LaterDate:TDateTime):Integer var Yearlater,Yearformer,Monthlater,Monthformer,Daylater,Dayformer:word; begin DecodeDate(LaterDate,Yearlate,Monthlater,Daylater); DecodeDate(FormerDate,Yearformer,Monthformer,Dayformer); result:= (Yearlater-Yearformer)*360+(Monthlater-Monthformer)*30+(Daylater- Dayformer); end;未测试
解决了,分享一下吧 function days30(a,b:TDateTime):Integer; var datea,dateb:string; nian,yue,ri:integer; begin datea:=DateTimeToStr(a); dateb:=DateTimeToStr(b); nian:=strtoint(Copy(dateb,0,4))-strtoint(Copy(datea,0,4)); yue:=strtoint(Copy(dateb,6,2))-strtoint(Copy(datea,6,2)); ri:=strtoint(Copy(dateb,9,2))-strtoint(Copy(datea,9,2)); nian:=nian*12*30; yue:=yue*30; result:=nian+yue+ri; end;
DateUtils;function DaysBetween(const ANow, AThen: TDateTime): Integer;
月按30天算?=(天数 div 30) 月另 (天数 mod 30) 日
我试过跟days360计算的结果不同
d1, d2: TDate;
begin
d1 := StrToDate('2010-1-1');
d2 := StrToDate('2010-12-31'); ShowMessage(FloatToStr(d2 - d1));//结果是364天,如果算上'2010-12-31',那么就是365天。
end;
function GetDateDiff(FormerDate,LaterDate:TDateTime):Integer
var Yearlater,Yearformer,Monthlater,Monthformer,Daylater,Dayformer:word;
begin
DecodeDate(LaterDate,Yearlate,Monthlater,Daylater);
DecodeDate(FormerDate,Yearformer,Monthformer,Dayformer);
result:= (Yearlater-Yearformer)*360+(Monthlater-Monthformer)*30+(Daylater- Dayformer);
end;未测试
解决了,分享一下吧
function days30(a,b:TDateTime):Integer;
var
datea,dateb:string;
nian,yue,ri:integer;
begin
datea:=DateTimeToStr(a);
dateb:=DateTimeToStr(b);
nian:=strtoint(Copy(dateb,0,4))-strtoint(Copy(datea,0,4));
yue:=strtoint(Copy(dateb,6,2))-strtoint(Copy(datea,6,2));
ri:=strtoint(Copy(dateb,9,2))-strtoint(Copy(datea,9,2));
nian:=nian*12*30;
yue:=yue*30;
result:=nian+yue+ri;
end;