Calendar時間操作


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;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM