不知道有没有现成函数。没有的话如何操作简便啊2个日期之间的天数差。按照月份30天计算类似excel
 days360希望各位帮下忙

解决方案 »

  1.   

    uses
      DateUtils;function DaysBetween(const ANow, AThen: TDateTime): Integer;
      

  2.   

    2个日期直接相减,就是天数
    月按30天算?=(天数 div 30) 月另 (天数 mod 30) 日
      

  3.   

     DaysBetween不是按30天算的把?
    我试过跟days360计算的结果不同
      

  4.   

    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;
      

  5.   

    那就拆分吧,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;未测试
      

  6.   


    解决了,分享一下吧
    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;