比如说,在窗体中有二个文本框,分别输入的是2003-5-4和2003-6-8,我想将它们计算出来天数赋给一个Integer型或String型的变量。
请教各位如何实现?谢谢。

解决方案 »

  1.   

    var
      i:real;
      sDay:String;
    begin
      i:=strtodatetime(edit1.text)-strtodatetime(edit2.text)
      sday:=FloatToStr(i);//整数部分为天数
    end;
      

  2.   

    real是一种什么类型?
    floattostr不是从浮点型转换为字符型吗,那两个日期相减得到的结果是浮点型的吗?
      

  3.   

    我使用了你的方法,但它不能执行,说是real的原因。
    另外,我想让sday这个变量在label上显示出来,又该怎么做?
      

  4.   

    虽然上面的方法是对的,但是有更简单的方法:简单方法用daysbetween()函数
      

  5.   

    daysbetween(strtodatetime(edit1.text),strtodatetime(edit2.text))
      

  6.   

    请问daysbetween()函数返回的什么类型的?
      

  7.   

    使用dayjsbetween()函数
    运行时出现错误提示如下:
    [error]Unit1.pas(52):Undeclared identifier:'daysbetween'
      

  8.   

    添加DateUtils单元啊
    错误就消失了
      

  9.   

    我若是将daysbetwwen()函数的值赋给一个变量,这个变量应该是什么类型?
      

  10.   

    我觉得为了程序的通用,添加两个tdatetime类型动态dt1和dt2 将edit1
    和edit2的字符串存在这两个变量里,以便以后操作该日期的时候,不必
    在转换,你的问题多半是edit力输入的应该是 2003-05-30 等等
    而不应写成2003-5-30 有可能系统不识别后者,你有两个日期以后想得到
    他们的差值就容易多了
      

  11.   

    daysbetween(strtodatetime(edit1.text),strtodatetime(edit2.text))反回的是整数值,想给label还得转换一下
      

  12.   

    strtodate(FormatDateTime('yyyy-mm-dd',edit1.text))-strtodate(formatdatetime('yyyy-mm-dd',edit2.text))
    相减出来的结果就是天数
      

  13.   

    最死的办法,我也想用,分析得到年、月、日,是不是用函数yearof()、monthof()、dayof()这三个,但是运行时也是要报错,是否也要加一个DateUtils单元?