1、Calendar是Java提供的一個util類,在java.util中。我們在開發過程中經常遇到,需要對時間進行處理的方式。而Java中Calendar給我們提供了很好的控制方式。
2、我這里主要是介紹幾種Calendar的操作方式來獲取不同時間
public class CalendarUtil { /** * 獲取當月第一天開始時間和最后一天結束時間 * @return */ public final static List<Long> getMonthStartAndEnd(){ Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MONTH,0); calendar.set(Calendar.DAY_OF_MONTH,1); calendar.set(Calendar.HOUR_OF_DAY,0); calendar.set(Calendar.MINUTE,0); calendar.set(Calendar.SECOND,0); calendar.set(Calendar.MILLISECOND,0); Long firstDay = calendar.getTime().getTime(); calendar.add(Calendar.MONTH,1); Long lastDay = calendar.getTime().getTime()-1; List<Long> times = new ArrayList<>(); times.add(firstDay); times.add(lastDay); return times; } /** * 獲取當天的開始時間 * @return */ public final static Long getDayStart(){ Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MONTH,0); calendar.set(Calendar.HOUR_OF_DAY,0); calendar.set(Calendar.MINUTE,0); calendar.set(Calendar.SECOND,0); calendar.set(Calendar.MILLISECOND,0); return calendar.getTime().getTime(); } /** * 獲取某天的開始時間 * @param day * @return */ public final static Long getDayStart(Integer day){ Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MONTH,0); calendar.set(Calendar.HOUR_OF_DAY,0); calendar.set(Calendar.MINUTE,0); calendar.set(Calendar.SECOND,0); calendar.set(Calendar.MILLISECOND,0); calendar.set(Calendar.DAY_OF_MONTH,day.intValue()); return calendar.getTime().getTime(); } /** * 獲取某天的結束時間 * @param day * @return */ public final static Long getDayEnd(Integer day){ Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MONTH,0); calendar.set(Calendar.HOUR_OF_DAY,0); calendar.set(Calendar.MINUTE,0); calendar.set(Calendar.SECOND,0); calendar.set(Calendar.MILLISECOND,0); calendar.set(Calendar.DAY_OF_MONTH,day.intValue()+1); return calendar.getTime().getTime()-1; } /** * 獲取本月或者次月某天的結束時間 * @param month * @param day * @return */ public final static Long getDayEnd(Integer month,Integer day){ Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MONTH,month.intValue()); calendar.set(Calendar.HOUR_OF_DAY,0); calendar.set(Calendar.MINUTE,0); calendar.set(Calendar.SECOND,0); calendar.set(Calendar.MILLISECOND,0); calendar.set(Calendar.DAY_OF_MONTH,day.intValue()+1); return calendar.getTime().getTime()-1; } /** * 獲取本季度的開始時間和結束時間 * @return */ public final static List<Long> getQuarterStartAndEnd(){ //獲取時間 Calendar calendar = Calendar.getInstance(); //判讀當前時間是哪個季度 int month = calendar.get(Calendar.MONTH)+1; Integer quarter = 0; if (month>=1 && month <=3) { quarter = 1; } else if (month>=4 && month <=6) { quarter = 2; } else if (month>=7 && month <=9) { quarter = 3; } else if (month>=10 && month <=12) { quarter = 4; } calendar.set(Calendar.MONTH,3*(quarter.intValue()-1)); calendar.set(Calendar.DAY_OF_MONTH,1); calendar.set(Calendar.HOUR_OF_DAY,0); calendar.set(Calendar.MINUTE,0); calendar.set(Calendar.SECOND,0); calendar.set(Calendar.MILLISECOND,0); Long firstDay = calendar.getTime().getTime(); calendar.add(Calendar.MONTH,3); Long lastDay = calendar.getTime().getTime()-1; List<Long> times = new ArrayList<>(); times.add(firstDay); times.add(lastDay); return times; } /** * 獲取每個季度第某個月,第某個天數的開始時間 * @return */ public final static List<Long> getQuarterStart(Integer month,Integer day){ List<Long> times = new ArrayList<>(); for (int i = 1; i <= 4; i++) { //獲取時間 Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MONTH,3*(i-1)-1+month.intValue()); calendar.set(Calendar.DAY_OF_MONTH,day); calendar.set(Calendar.HOUR_OF_DAY,0); calendar.set(Calendar.MINUTE,0); calendar.set(Calendar.SECOND,0); calendar.set(Calendar.MILLISECOND,0); times.add(calendar.getTime().getTime()); } return times; } /** * 獲取某個季度某個月,某天的結束時間 * @return */ public final static Long getQuarterEnd(Integer month,Integer day){ //獲取時間 Calendar calendar = Calendar.getInstance(); //判讀當前時間是哪個季度 int currentMonth = calendar.get(Calendar.MONTH)+1; Integer quarter = 0; if (currentMonth>=1 && currentMonth <=3) { quarter = 1; } else if (currentMonth>=4 && currentMonth <=6) { quarter = 2; } else if (currentMonth>=7 && currentMonth <=9) { quarter = 3; } else if (currentMonth>=10 && currentMonth <=12) { quarter = 4; } calendar.set(Calendar.MONTH,3*(quarter.intValue()-1)+month.intValue()); calendar.set(Calendar.DAY_OF_MONTH,day+1); calendar.set(Calendar.HOUR_OF_DAY,0); calendar.set(Calendar.MINUTE,0); calendar.set(Calendar.SECOND,0); calendar.set(Calendar.MILLISECOND,0); return calendar.getTime().getTime()-1; } /** * 獲取當年的開始時間和結束時間 * @return */ public final static List<Long> getYearStartAndEnd(){ Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MONTH,0); calendar.set(Calendar.DAY_OF_MONTH,1); calendar.set(Calendar.HOUR_OF_DAY,0); calendar.set(Calendar.MINUTE,0); calendar.set(Calendar.SECOND,0); calendar.set(Calendar.MILLISECOND,0); Long firstDay = calendar.getTime().getTime(); calendar.add(Calendar.MONTH,12); Long lastDay = calendar.getTime().getTime()-1; List<Long> times = new ArrayList<>(); times.add(firstDay); times.add(lastDay); return times; } /** * 獲取當前年第某個月,第某個天數的開始時間 * @return */ public final static Long getYearStart(Integer month,Integer day){ //獲取時間 Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MONTH,month.intValue()-1); calendar.set(Calendar.DAY_OF_MONTH,day.intValue()); calendar.set(Calendar.HOUR_OF_DAY,0); calendar.set(Calendar.MINUTE,0); calendar.set(Calendar.SECOND,0); calendar.set(Calendar.MILLISECOND,0); return calendar.getTime().getTime(); } /** * 獲取當前年第某個月,第某個天數的結束時間 * @return */ public final static Long getYearEnd(Integer month,Integer day){ //獲取時間 Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MONTH,month.intValue()-1); calendar.set(Calendar.DAY_OF_MONTH,day.intValue()+1); calendar.set(Calendar.HOUR_OF_DAY,0); calendar.set(Calendar.MINUTE,0); calendar.set(Calendar.SECOND,0); calendar.set(Calendar.MILLISECOND,0); return calendar.getTime().getTime()-1; } }
