今天在使用calendar類擷取上個月的第一天、上個月的最後一天、本月的第一天、本月的最後一天的時候(同時擷取),發現一個問題。就是時間月份總是有差別,經過查jdk文檔和調試才知道,對於Calendar.add方法和roll會自動更新原來是時間,強迫改變,但是使用set方法則不會。而且使用set方法更加人性化,顯示出來的時期更加直觀。
//擷取上個月的第一天
public static void getfof(){
//擷取上個月 第一天
Calendar c=Calendar.getInstance();
c.add(Calendar.MONTH, -1);
c.set(Calendar.DAY_OF_MONTH, 1);
System.out.println(c.getTime());
}
/**
* 擷取當前日曆的上一個月的最後一天
* @param cal
* @return
*/
public static void getlofl(){
Calendar c=Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, 0);
System.out.println(c.getTime());
}
/**
* 擷取當前日曆的這個月的第一天
* @param cal
* @return
*/
public static void getfoft(){
Calendar c=Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, 1);
System.out.println(c.getTime());
}
/**
* 擷取當前日曆的這個月的最後一天
* @param cal
* @return
*/
public static void getloft(){
Calendar c=Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
System.out.println(c.getTime());
}