tt:=now-adoquery1.Fields[3].AsDateTime; //now-crq
iyear:=strtoint(copy(formatdatetime('YYYY-MM',tt),3,2));
在第二条语句执行后会有什么样的结果?不懂第二条语句的含义。把天数转换成????

解决方案 »

  1.   

    是得到年份
    formatdatetime是把 tt包含的日期格式化成 YYYY-MM的格式,比如结果为2008-08copy出结果的第三位开始的二位字符串 结果为08strtoint 字符串转换成整型
      

  2.   

    tt:=now-adoquery1.Fields[3].AsDateTime;
    tt提到的是当前时间和数据库里那个时间相减后的结果,即相差多少时间
    iyear:=strtoint(copy(formatdatetime('YYYY-MM',tt),3,2));
    得到的是这个相差的时间换算成多少年。原因1楼的已经说过了。
      

  3.   

     tt:=now-adoquery1.Fields[3].AsDateTime;
    //now是当前时间2008-8-31 8:30  adoquery1.Fields[3].AsDateTime:=2008-8-31 7:30
     这样执行结果为 0.44093101 左右
     s1:=formatdatetime('yyyy-mm',tt);
    //紧接着s1怎么就显示等于1899-12了呢 ??????????????
     iyear:=strtoint(copy(formatdatetime('YYYY-MM',tt),3,2));
    //执行后iyear=99
      

  4.   

    看你的目的是做什么。如果是为了得到相差的年数的话,直接用YearsBetween也可以