请教各位高手,在DELPHI如何计算两个月份之间的天数?
我用两个datetimepicker:   datetimepicker1,datetimepicker2   获取两个月份   
  怎样计算datetimepicker2与datetimepicker1两个的天数?   
  比如说   
      datetimepicker1取值为2007.6.13
     datetimepicker2取值为2007.9.19   
      我需要计算所选月份的天数,也就是2007年6月1日-2007年9月30日之间有多少天?

解决方案 »

  1.   

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

  2.   

    直接相减   
      DayDiff:   Integer   
      DayDiff:=StrToDateTime('2007-11-30')-StrToDateTime('2007-2-10')
      

  3.   

    trunc(DateTimePicker2.datetime)-trunc(DateTimePicker1.datetime)
      

  4.   

    uses
    DateUtils;function DaysBetween(const ANow, AThen: TDateTime): Integer;还是月亮的方法好
      

  5.   

    哈哈,都说月亮的好??
    其实DaysBetween要引用DateUtils单元,不是很好,而且DaysBetween就是用trunc(DateTimePicker2.datetime-DateTimePicker1.datetime)的出的,所以还是↑飞刀客↑的好!
    DayDiff:       Integer; 
    DayDiff:=trunc(DateTimePicker2.datetime-DateTimePicker1.datetime);
      

  6.   

    如果是TDate类型的,可以直接相减.
      

  7.   

    直接对减是最方便的, delphi日期是一个floatIEEE标准,日期是整数部分,1900-1-1 00:00:00 为 1,之后累加
    时间是小数部分,是一个分数,精确到 1ms
      6:00 是 6 / 24
      6:30 比方就是 (6 * 60 + 30) / (24 * 60)
      6:30:30 就是 (6*60*60 + 30*60 + 30) / (24*60*60)
    sql标准不太一样楼上的 DayDiff:=trunc(DateTimePicker2.datetime-DateTimePicker1.datetime); 是不安全的trunc(DateTimePicker1.datetime) - trunc(DateTimePicker2.datetime) 才行楼上的 TDate 在 delphi的确有这个类型,但按IEEE标准来说,日期时间是一个整体,无法分开,用TDateTime兼容性比较大
      

  8.   

    好好看一下DateUtils单元的源码 日期方面你就不会再有问题了
      

  9.   

    To  comanche 为什么说DayDiff:=trunc(DateTimePicker2.datetime-DateTimePicker1.datetime);   是不安全的 ?????
    能说说原因吗?