d1,d2:Tdatetime  d1:=strtodatetime('2003-2-1 12:12');
  d2:=strtodatetime('2003-2-1 01:12');  如何求出d1与d2相隔多少小时?  d1:=strtodatetime('2003-2-1');
  d2:=strtodatetime('2003-4-5');如何求出d1与d2相隔多少天?

解决方案 »

  1.   

    用decodetime函数获取各时间的值然后再相减
      

  2.   

    自己研究一下吧procedure TForm1.Button1Click(Sender: TObject);var
      Present: TDateTime;
      Year, Month, Day, Hour, Min, Sec, MSec: Word;
     begin
      Present:= Now;
      DecodeDate(Present, Year, Month, Day);
      Label1.Caption := 'Today is Day ' + IntToStr(Day) + ' of Month '
        + IntToStr(Month) + ' of Year ' + IntToStr(Year);
      DecodeTime(Present, Hour, Min, Sec, MSec);
      Label2.Caption := 'The time is Minute ' + IntToStr(Min) + ' of Hour '
        + IntToStr(Hour);
    end;
      

  3.   

    DATEDIFF ( datepart , startdate , enddate ) 这个函数,数据库是sqlserver吗?其中
    参数: 返回值:=DATEDIFF ( day , d2, d1) 或 返回值:=DATEDIFF ( dd , d2, d1)
      

  4.   

    procedure DecodeDateTime(const AValue: TDateTime; out AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond: Word);
      

  5.   

    1.  ( d2-d1 ) * 24  小时数
    2.  (d2-d1)         天数不过浮点数运算有点误差
      

  6.   

    monthsbetween(const anow,athen:TDtatetime);引用单元dateutils
    daysbetween(const anow,athen:TDatetime);引用单元dateutils
      

  7.   

    我今天刚解决的问题
    类型转化一下就可以了,如下面:要放上datatimepicker控键
    如下edit1.Text:=(floattostr(d1.Date-d2.Date))比方说d1的时间是2003-8-18
          d2的时间是2003-8-23
    则edit1.text的结果就是5
    小时当然就不用我说了!直接*24就行了