Calendar工具類的日常使用--保持持續更新中

package com.alipay.airbops.common.service.integration.util;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class CalenderUtil {

    /**
     * Description: 判斷一個時間是否在一個時間段內 </br>
     *
     * @param nowTime   當前時間 </br>
     */
    public static boolean belongCalendar(Date nowTime) {
        Calendar date = Calendar.getInstance();
        date.setTime(nowTime);

        Calendar begin = Calendar.getInstance();
        begin.setTime(lastThursday());

        Calendar end = Calendar.getInstance();
        end.setTime(thisWednesday());

        return date.after(begin) && date.before(end);
    }

    public static boolean isThisWeek(Long time) {
        if (time == null) {
            return false;
        }
        Calendar calendar = Calendar.getInstance();
        int currentWeek = calendar.get(Calendar.WEEK_OF_YEAR);
        calendar.setTime(new Date(time));
        int paramWeek = calendar.get(Calendar.WEEK_OF_YEAR);
        if (paramWeek == currentWeek) {
            return true;
        }
        return false;
    }


    public static boolean isThisYear(Long time) {
        if (time == null) {
            return false;
        }
        Calendar calendar = Calendar.getInstance();
        int currentYear = calendar.get(Calendar.YEAR);
        calendar.setTime(new Date(time));
        int paramYear = calendar.get(Calendar.YEAR);
        if (paramYear == currentYear) {
            return true;
        }
        return false;
    }

    /**
     * 獲取上週四時間
     */
    private static Date lastThursday() {
        //作用防止週日得到本週日期
        Calendar calendar = Calendar.getInstance();
        while (calendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {
            calendar.add(Calendar.DAY_OF_WEEK, -1);
        }
        int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
        int offset = 7 - dayOfWeek;
        calendar.add(Calendar.DATE, offset - 9);
        return getFirstDayOfWeek(calendar.getTime(), 5);//這是從上週日開始數的到上週五爲6
    }

    /**
     * 得到本週週三日期
     */
    private static Date thisWednesday() {
        Calendar cal = new GregorianCalendar();
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek() + 2);
        cal.set(Calendar.HOUR_OF_DAY, 23);//指示一天中的小時。HOUR_OF_DAY 用於 24 小時制時鐘。例如,在 10:04:15.250 PM 這一時刻,HOUR_OF_DAY 爲 22。
        cal.set(Calendar.MINUTE, 59);//指示一小時中的分鐘。例如,在 10:04:15.250 PM 這一時刻,MINUTE 爲 4。
        cal.set(Calendar.SECOND, 59);
        Date last = cal.getTime();
        return last;
    }


    /**
     * 得到某一天的該星期的第一日 00:00:00
     *
     * @param date
     * @param firstDayOfWeek 一個星期的第一天爲星期幾
     * @return
     */
    private static Date getFirstDayOfWeek(Date date, int firstDayOfWeek) {
        Calendar cal = Calendar.getInstance();
        if (date != null) {
            cal.setTime(date);
        }
        cal.setFirstDayOfWeek(firstDayOfWeek);//設置一星期的第一天是哪一天
        cal.set(Calendar.DAY_OF_WEEK, firstDayOfWeek);//指示一個星期中的某天
        cal.set(Calendar.HOUR_OF_DAY, 0);//指示一天中的小時。HOUR_OF_DAY 用於 24 小時制時鐘。例如,在 10:04:15.250 PM 這一時刻,HOUR_OF_DAY 爲 22。
        cal.set(Calendar.MINUTE, 0);//指示一小時中的分鐘。例如,在 10:04:15.250 PM 這一時刻,MINUTE 爲 4。
        cal.set(Calendar.SECOND, 0);
        return cal.getTime();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章