日期:2014-05-18  浏览次数:20765 次

關於日期相加問題
我在開發圖書管理系統時遇到了一個難題。

我想實現這樣一個情形。比如有一個時間:2007-3-20,給它加上4,就得2007-3-24;
如果是2007-3-30,給它加上2,就得2007-4-1.

因為這個關係到圖書管理系統中的一個業務實現,用戶借書時,在程序中記下他借書的時間(比如說是2007-4-28),現在圖書館規定借書的同學借的圖書必須在20天內歸還,不能過期不還,那得在程序中判断他借的書是不是過期了。應該是這樣做的,在程序中先將2007-4-28與借書最大期限相加(比如,2007-4-28加上20得2007-5-18,然後將2007-5-18與當前時間作比較,現在是2007-5-20,則說明他借的書還沒有過期)

相信我說明白了這個問題吧,有哪位JAVA高手可以幫助我解決一下這個問題,把下面的這個方法的具體代碼實現呢?


方法:
boolean   isReturn(String   beginDay,int   maxDays)

------解决方案--------------------
时间相加需要使用java.util.Calendar类,该类有个add方法可以控制日期比较的,另外显示的时候用java.text.SimpleDateFormat类定义时间格式。
想学习就得自己去研究,这的人可以提供思路给你,可以给你例子。不过代码还是你自己去写的好!
------解决方案--------------------
public boolean isReturn(String beginDay, int maxDays)
{
java.text.DateFormat df = new java.text.SimpleDateFormat( "yyyy-MM-dd ");// 日期格式化,用于将你输入的String类型的日期转化为java.util.Date类型,以便于进行日期的加减操作
java.util.Date currentDate = new java.util.Date();// 获得当前的日期,用于和还书日期进行比较
java.util.Date term = new java.util.Date();// 用于存储正常还书日期
try
{
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime(df.parse(beginDay));
c.add(java.util.Calendar.DAY_OF_MONTH, maxDays);
term=c.getTime();
return term.after(currentDate);
} catch (java.text.ParseException e)
{
System.out.println( "输入的日期不符合规定的格式 ");
return false;
}
}


关于代码中的一些方法的使用方法看API文档