2009-10-02 24 views
3

我想選擇在給定月份的第一天和最後一天之間創建日期的記錄。我計算與開始日期和結束日期如下方式月份:將一個月計算爲java中的「之間」期間

的日期「月」只是一個時間範圍內隨機日期

Calendar cal = Calendar.getInstance(); 
cal.setTime(month); 
int endday = cal.getActualMaximum(Calendar.DAY_OF_MONTH); 
int actualmonth = cal.get(Calendar.MONTH) + 1; 
int year = cal.get(Calendar.YEAR); 

Date begin = format.parse("01." + actualmonth + "." + year); 
Date end = format.parse(endday + "." + actualmonth + "." + year); 

當我想到這一點,我其實有設置白天也是如此,以避免在該月的最後一天丟失記錄。

我覺得這有點不雅,任何人都有更好的解決方案?

+0

你是從數據庫中選擇記錄嗎? – 2009-10-02 12:35:59

+0

是的,使用select ..之間:開始和結束 – 2009-10-02 12:38:31

回答

6

我會做的是創建一個日曆,並設置月份和年份到你想要的月份,一天到1小時分鐘和毫秒爲零。然後把你的開始範圍的日期。然後我會添加一個月,然後減去一毫秒。以你的結束範圍的日期爲準。

Calendar dateCal = Calendar.getInstance(); 
    dateCal.set(Calendar.MONTH, month); 
    dateCal.set(Calendar.YEAR, year); 
    dateCal.set(Calendar.HOUR_OF_DAY, 0); 
    dateCal.set(Calendar.MINUTE, 0); 
    dateCal.set(Calendar.SECOND, 0); 
    dateCal.set(Calendar.MILLISECOND, 0); 
    Date startDate = dateCal.getTime(); 

    dateCal.add(Calendar.MONTH, 1) 
    dateCal.add(Calendar.MILLISECOND, -1); 
    Date endDate = dateCal.getTime(); 
3

有用於獲取月的第一天和最後一天在日曆類可用的方法:

getActualMaximum(Calendar.DAY_OF_MONTH) 
getActualMinimum(Calendar.DAY_OF_MONTH) 
0

好,解決它由保羅的例子:

Calendar cal = Calendar.getInstance(); 
cal.setTime(month); 
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.getActualMinimum(Calendar.DATE), 0, 0, 0); 
cal.set(Calendar.MILLISECOND, 0); 
Date begin = cal.getTime(); 
cal.add(Calendar.MONTH, 1); 
cal.add(Calendar.MILLISECOND, -1); 
Date end = cal.getTime(); 

感謝大家

相關問題