Access2000数据库有一个ft表,其中有一个rdsj字段(入店时间),内容为:2006-6-13 9:59:52,运行以下的简单过程为什么yzsj(已住时间)变量的内容会是:'1900年1月1日2小时xx分'呢?按说今天是2006-06-15,应该才2天多点的时间啊!我将关键语句改写为:yysj := FormatDateTime('y年m月d日h小时n分', dtTmp); 也同样计算错误。为什么会这样?var
  dtTmp: TDateTime;
  yzsj: string;
begin
  with Adoquery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('Select * from ft');
    Open;
    dtTmp := Now - FieldByName('rdsj').AsDateTime;
    yzsj := FormatDateTime('y年m月d日h小时n分', dtTmp);
  end;
end;
 

解决方案 »

  1.   

    Access2000数据库有一个ft表,其中有一个rdsj字段(入店时间),内容为:2006-6-13 9:59:52,运行以下的简单过程为什么yzsj(已住时间)变量的内容会是:'1900年1月1日2小时xx分'呢?按说今天是2006-06-15,应该才2天多点的时间啊!我将关键语句改写为:yysj := FormatDateTime('y"年"m"月"d"日"h"小时"n"分"', dtTmp); 也同样计算错误。为什么会这样?var
      dtTmp: TDateTime;
      yzsj: string;
    begin
      with Adoquery1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('Select * from ft');
        Open;
        dtTmp := Now - FieldByName('rdsj').AsDateTime;
        yzsj := FormatDateTime('y年m月d日h小时n分', dtTmp);
      end;
    end;
      

  2.   

    dtTmp := Now - FieldByName('rdsj').AsDateTime;
        yzsj := FormatDateTime('y年m月d日h小时n分', dtTmp);你FormatDateTime('YYYY-MM-DD HH:MM', dtTmp);
    看看结果是什么,你最好看看showMessage(dateTimeToStr(dtTmp))
      

  3.   

    哈哈,你知道DateTime以什么表示吗?就是浮点数啊,
    0不是公元0年0月……
    而是1899年12月31日……(不知是否如此)
    dtTmp := Now - FieldByName('rdsj').AsDateTime;表示的是两个时间之间相差的天数,可能是1.XXXXXX,你说转成日期类型不就是1900年1月1日……吗?