一位读者在2005年3月15日借了一本书,今天过来还书,而图书的最大借阅天数是一个月,显然现在是超了10天了,
我想在系统中实现:系统会自动弹出一个提示框,提示的内容为过期的天数!
请问应该怎么写?烦请用详细代码写出,谢谢!!
这几天收到了热心的贴子,不知道怎么搞的,没有一个调试通过的!

解决方案 »

  1.   

    3月15日是存在数据库中的.
    你读取该日期..将它FORMAT成标准格式..
    然后当日的日期..你也FORMAT成标准格式...
    能减吗??
    我去试试
      

  2.   

    我支持subncho(快疯) 的意见,这样应该能解决吧
      

  3.   

    读出还书的日期date1,然后用date1减去借书的日期date0,得到的天数与30比较,如果小于30,
    说明在正常规定时间内还书,如果大于30,就showmessage('')不就ok了。var 
    date0,date1:Tdatetime;
    vnum:real;
    begin
    date0:=2005-03-15;
    date1:=2005-04-25;
    vnum:=date1-date0-30;
    if vnum>0 then
    showmessage(floattostr(vnum));
      

  4.   

    //纯Delphi实现方式
    1、首先从数据库中取出借书时间,并分解成为Year,Month,Day;
    2、将Month+1得到规定还书月份,并组合成yyyy-mm-dd格式的字符串类型的还书日期;
    3、得到当前日期-StrToDate(字符串类型的还书日期)=所需结果!
    //借助数据库功能实现
    1、很多数据库中有直接得到下一个月同一天的函数,得到规定还书日期;
    2、得到当前日期-StrToDate(字符串类型的还书日期)=所需结果!
      

  5.   

    SQL Server:
      Select Cast( GetDate()-DateAdd(month,1,借书日期) as integer) from 借阅表 where ID=:@编号
      或
      Select DateDiff(Day, DateAdd(month,1,借书日期) ,GetDate() ) from 借阅表 where ID=:@编号Oracle
      Select trunc(sysdate - Add_months(借书日期,1) ) from 借阅表 where ID=:@编号
      

  6.   

    用函数 : DecodeDate(const DateTime: TDateTime; var Year, Month, Day: Word);
    功  能 : 分解日期为年、月、日
    例  子   :
    procedure TForm1.Button1Click(Sender: TObject);
    var
    Year, Month, Day: Word;
    begin
    DecodeDate(Date, Year, Month, Day);
    Edit1.Value := Year;
    Edit2.Value := Month;
    Edit3.Value := Day;
    end;
    日期就可以算出来了
      

  7.   

    var 
    date0,date1:Tdatetime;
    vnum:real;
    i:integer;
    begin
    date0:=2005-03-15;
    date1:=2005-04-25;
    vnum:=date1-date0-30;
    i:=round(vnum);
    if vnum>0 then
    showmessage(inttostr(i));
      

  8.   

    date0和date1只能取日期.不能取时间.
      

  9.   

    use DateUtils;DaysBetween 函数返回两个日期之间的天数UnitDateUtilsCategorydate/time routinesfunction DaysBetween(const ANow, AThen: TDateTime): Integer;DescriptionCall DaysBetween to obtain the difference, in days, between two TDateTime values.DaysBetween counts only whole days that have elapsed. Thus, DaysBetween reports the difference between Dec 31, 1999 11:59 PM and Jan 1, 2000 11:58 PM as 0 because the difference is one minute short of an entire day.
      

  10.   

    简单东西,还是自己动手思考的好http://lysoft.7u7.net
      

  11.   

    转换成时间类型,进行加减运算,这里需要用大的减去小的,然后就是结果,因为在系统里,时间是一个float型