JAVA Calendar 时间计算

昨天,今天,上周,本周,上个月,本月,上个季度,本季度,近半年,上半年,下半年,上一年,今年

package com.trs.quwei;
 
/**
 * Calendar计算 昨天,今天,上周,本周,上个月,本月,上个季度,本季度,近半年,上半年,下半年,上一年,今年
 *
 * @Author quwei
 * @Date 2019/09/11
 */
 
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.Map;
 
public class DateUtil {
 
    /**
     * 获取今日开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setDayRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.MILLISECOND, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        condition.put("startTime", calendar.getTime());
        calendar.set(Calendar.HOUR_OF_DAY, 24);
        calendar.set(Calendar.SECOND, -1);
        condition.put("stopTime", calendar.getTime());
    }
 
    /**
     * 获取昨天开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setYesterdayRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.MILLISECOND, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.HOUR_OF_DAY, -24);
        condition.put("startTime", calendar.getTime());
        calendar.set(Calendar.MILLISECOND, 0);
        calendar.set(Calendar.SECOND, 59);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        condition.put("stopTime", calendar.getTime());
 
 
    }
 
    /**
     * 获得最近三天的开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setThreeRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.MILLISECOND, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.HOUR_OF_DAY, 24);
        condition.put("stopTime", calendar.getTime());
        calendar.set(Calendar.HOUR_OF_DAY, -72);
        condition.put("startTime", calendar.getTime());
    }
 
    /**
     * 获得近一周的开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setDaySevenRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        calendar.set(Calendar.HOUR_OF_DAY, 24);
        condition.put("stopTime", calendar.getTime());
        calendar.set(Calendar.HOUR_OF_DAY, -168);
        condition.put("startTime", calendar.getTime());
    }
 
    /**
     * 获得近一月的开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setDayTRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        calendar.set(Calendar.HOUR_OF_DAY, 24);
        condition.put("stopTime", calendar.getTime());
        calendar.set(Calendar.HOUR_OF_DAY, -720);
        condition.put("startTime", calendar.getTime());
    }
 
    /**
     * 获取本周开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setWeekRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
 
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        condition.put("startTime", calendar.getTime());
        calendar.add(Calendar.DAY_OF_WEEK, 7);
        calendar.set(Calendar.SECOND, -1);
        condition.put("stopTime", calendar.getTime());
 
    }
 
    /**
     * 获取上周开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setLastWeekRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        calendar.add(Calendar.DAY_OF_WEEK, -7);
        condition.put("startTime", calendar.getTime());
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
        calendar.add(Calendar.DAY_OF_WEEK, 6);
        condition.put("stopTime", calendar.getTime());
    }
 
    /**
     * 获取本月开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setMonthRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        condition.put("startTime", calendar.getTime());
        calendar.add(Calendar.DAY_OF_WEEK, 7);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        // calendar.set(Calendar.HOUR_OF_DAY, 24);
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
        condition.put("stopTime", calendar.getTime());
    }
 
    /**
     * 获取上月开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setLastMonthRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        calendar.add(Calendar.MONTH, -1);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        condition.put("startTime", calendar.getTime());
        calendar.add(Calendar.DAY_OF_WEEK, 7);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        //calendar.set(Calendar.HOUR_OF_DAY, 24);
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
        condition.put("stopTime", calendar.getTime());
    }
 
    /**
     * 获取本季度开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setQuarterRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        int currentMonth = calendar.get(Calendar.MONTH) + 1;
        try {
            if (currentMonth >= 1 && currentMonth <= 3)
                calendar.set(Calendar.MONTH, 0);
            else if (currentMonth >= 4 && currentMonth <= 6)
                calendar.set(Calendar.MONTH, 3);
            else if (currentMonth >= 7 && currentMonth <= 9)
                calendar.set(Calendar.MONTH, 6);
            else if (currentMonth >= 10 && currentMonth <= 12)
                calendar.set(Calendar.MONTH, 9);
            calendar.set(Calendar.DATE, 1);
        } catch (Exception e) {
            e.printStackTrace();
        }
        condition.put("startTime", calendar.getTime());
        calendar.add(Calendar.MONTH, 3);
        calendar.set(Calendar.SECOND, -1);
        condition.put("stopTime", calendar.getTime());
    }
 
    /**
     * 获取上季度开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setLastQuarterRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        int currentMonth = calendar.get(Calendar.MONTH) + 1;
        try {
            if (currentMonth >= 1 && currentMonth <= 3)
                calendar.set(Calendar.MONTH, 0);
            else if (currentMonth >= 4 && currentMonth <= 6)
                calendar.set(Calendar.MONTH, 3);
            else if (currentMonth >= 7 && currentMonth <= 9)
                calendar.set(Calendar.MONTH, 6);
            else if (currentMonth >= 10 && currentMonth <= 12)
                calendar.set(Calendar.MONTH, 9);
            calendar.set(Calendar.DATE, 1);
        } catch (Exception e) {
            e.printStackTrace();
        }
        calendar.add(Calendar.MONTH, -3);
        condition.put("startTime", calendar.getTime());
        calendar.add(Calendar.MONTH, 3);
        calendar.set(Calendar.SECOND, -1);
        condition.put("stopTime", calendar.getTime());
    }
 
    /**
     * 获取近半年开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setHalfYearRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        calendar.add(Calendar.MONTH, -6);
        condition.put("startTime", calendar.getTime());
        calendar.add(Calendar.MONTH, 6);
        calendar.set(Calendar.SECOND, -1);
        condition.put("stopTime", calendar.getTime());
    }
 
    /**
     * 获取上半年开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setUpHalfYearRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), 0, calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        condition.put("startTime", calendar.getTime());
        calendar.add(Calendar.MONTH, 6);
        calendar.set(Calendar.SECOND, -1);
        condition.put("stopTime", calendar.getTime());
    }
 
    /**
     * 获取下半年开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setNextHalfYearRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), 0, calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        calendar.add(Calendar.MONTH, 6);
        condition.put("startTime", calendar.getTime());
        calendar.add(Calendar.MONTH, 6);
        calendar.set(Calendar.SECOND, -1);
        condition.put("stopTime", calendar.getTime());
    }
 
 
    /**
     * 获取本年开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setYearRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), 0, calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        condition.put("startTime", calendar.getTime());
        calendar.add(Calendar.YEAR, 1);
        calendar.set(Calendar.SECOND, -1);
        condition.put("stopTime", calendar.getTime());
    }
 
    /**
     * 获取上一年开始时间和结束时间
     *
     * @param condition
     * @return
     */
    public static void setLastYearRange(Map<Object, Object> condition) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(calendar.get(Calendar.YEAR), 0, calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        calendar.add(Calendar.YEAR, -1);
        condition.put("startTime", calendar.getTime());
        calendar.add(Calendar.YEAR, 1);
        calendar.set(Calendar.SECOND, -1);
        condition.put("stopTime", calendar.getTime());
    }
 
    /**
     * ("startTime" -> "Fri Jun 08 00:00:00 CST 2018")String的Date转为String类型的date
     */
    public static String strToformatDate(String date) {
        String str = "";
        Date date1 = new Date();
        try {
            DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
            date1 = df.parse(date);
            df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            str = df.format(date1);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return str;
    }
 
 
}

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值