2013-02-11 74 views
0

我目前正在執行一個項目,其中包括檢查項目是否提前運行或超出分配的時間。根據Java中的預定日期和持續時間檢查項目的時間狀態

我從數據庫中檢索項目的開始日期(yyyy-MM-dd)和項目應持續的月數。我還使用Calendar.getInstance()檢索今天的日期。

我需要的是一種方法來檢查今天的日期是否在預計的時間內。

任何幫助將非常感激!

不用無聊的代碼讓所有其他的代碼無聊,這裏是我正在處理的大塊。

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
Calendar cal = Calendar.getInstance(); 

String today = dateFormat.format(cal.getTime()); 
String startdate = project.getStart(); 
String duration = project.getDur(); 

回答

0

因此,一些沿行...

Calendar cal = Calendar.getInstance(); 
cal.setTime(startDate); 
cal.add(Calendar.MONTH, duration); 

Date endDate = cal.getTime(); 
Date today = new Date(); 

// You also want to check for today.equals(endDate) 
if (today.before(endDate)) { 
    // All is good... 
} else { 
    // PANIC NOW!! 
} 

注意。這也考慮到時間以及...

如果時間不是你的計算中的一個因素,我傾向於將其移動到一天的開始或一天結束,取決於您的要求會是...

public static Date toEndOfDay(Date date) { 

    Calendar cal = Calendar.getInstance(); 
    cal.setTime(date); 
    // Move the time to end of the day... 
    cal.set(Calendar.HOUR_OF_DAY, 23); 
    cal.set(Calendar.MINUTE, 59); 
    cal.set(Calendar.MILLISECOND, 999); 

    return cal.getTime(); 

} 

public static void main(String[] args) { 

    Calendar cal = Calendar.getInstance(); 
    cal.setTime(startDate); 
    cal.add(Calendar.MONTH, duration); 

    Date endDate = toEndOfDay(cal.getTime()); 
    Date today = toEndOfDay(new Date()); 

    // You also want to check for today.equals(endDate) 
    if (today.before(endDate)) { 
     // All is good... 
    } else { 
     // PANIC NOW!! 
    } 

} 
+0

非常感謝你,它像一個魅力。我對Calendar API和類似事物不是很熟悉,所以我非常感謝您的專業知識。 – 2013-02-11 04:53:49

相關問題