java获取指定和当前月第一天和最后一天,上个月第一天和最后一天

public class Test {
@org.junit.Test
   public void testDay(){
        SimpleDateFormat sm = new SimpleDateFormat("yyyy-MM-dd");
        //获取指定年月第一天
        Calendar calstar= Calendar.getInstance();
        calstar.setTime(new Date());
        calstar.set(Calendar.YEAR, calstar.get(Calendar.YEAR));
        calstar.set(Calendar.MONTH, 0);
        calstar.set(Calendar.DAY_OF_MONTH, 1);
        System.out.println("指定年第一天:"+DateUtil.beginOfDay(calstar.getTime()));

        calstar.set(Calendar.YEAR, calstar.get(Calendar.YEAR)+1);
        calstar.set(Calendar.DAY_OF_MONTH, 0);//最后一天
        System.out.println("指定年最后一天:"+DateUtil.endOfDay(calstar.getTime()));

        Calendar sn = Calendar.getInstance();
        sn.setTime(new Date());
        sn.set(Calendar.YEAR,sn.get(Calendar.YEAR)-2);
        sn.set(Calendar.MONTH,0);
        sn.set(Calendar.DAY_OF_MONTH,1);
        System.out.println("三年开始"+DateUtil.beginOfDay(sn.getTime()));

        sn.set(Calendar.YEAR,sn.get(Calendar.YEAR)+2);
        sn.set(Calendar.MONTH,12);
        sn.set(Calendar.DAY_OF_MONTH,0);
        System.out.println("三年结束"+DateUtil.endOfDay (sn.getTime()));

        Calendar zz = Calendar.getInstance();
        zz.setTime(new Date());
        zz.set(Calendar.DAY_OF_WEEK,2);
        zz.set(Calendar.WEEK_OF_YEAR,8);
        System.out.println("第---周---"+DateUtil.beginOfDay(zz.getTime()));

        Calendar c = Calendar.getInstance();
        c.setTime(new Date());
        c.set(Calendar.MONTH,c.get(Calendar.MONTH) - 1);
        System.out.println("上个月是---:"+DateUtil.beginOfDay(c.getTime()));

        //获取上个月的第一天
        Calendar cal = Calendar.getInstance();
        //上个月
        cal.add(Calendar.MONTH, -1);
        //设置为1号,当前日期既为本月第一天
        cal.set(Calendar.DAY_OF_MONTH,1);
        System.out.println("上月第一天:"+DateUtil.beginOfDay(cal.getTime()));

        //设置上个月最后一天
        cal.set(Calendar.DAY_OF_MONTH,cal.getActualMaximum(Calendar.DAY_OF_MONTH));
        System.out.println("上月最后一天:"+DateUtil.endOfDay(cal.getTime()));

        //获取当前月第一天:
        Calendar calstr = Calendar.getInstance();
        //本月
        calstr.add(Calendar.MONTH, 0);
        //设置为1号为本月第一天
        calstr.set(Calendar.DAY_OF_MONTH,1);
        System.out.println("当月第一天:"+ 
        String.valueOf(DateUtil.beginOfDay(calstr.getTime())));

        //设置当月为最后一天
        calstr.set(Calendar.DAY_OF_MONTH,     
        calstr.getActualMaximum(Calendar.DAY_OF_MONTH));
        System.out.println("当月最后一天:"+DateUtil.endOfDay(calstr.getTime()));

        Calendar calasts = Calendar.getInstance();
        //calasts.setTime(new Date());
        calasts.add(calasts.DATE,1);
        System.out.println("当前时间加1:"+sm.format(calasts.getTime()));

        calasts.add(calasts.DATE,-3);
        System.out.println("当前时间-3:"+sm.format(calasts.getTime()));

        System.out.println("获得上周第一天:"+getWeekStartDay());
        System.out.println("获得上周最后一天:"+getWeekEndDay());

        System.out.println("获得本周第一天:"+getCurrentWeekStartDay());
        System.out.println("获得本周最后一天 :"+getCurrentWeekEndDay());

        System.out.println("三天开始:"+getNeverThreeStartTime());
        System.out.println("三天结束:"+getNeverThreeEndTime());

        System.out.println("上个月三天开始:"+getNeverThreeStartTimes());
        System.out.println("上个月三天结束:"+getNeverThreeEndTimes());

        System.out.println("七天开始:"+getNeverSevenStartTime());
        System.out.println("七天结束:"+getNeverSevenEndTime());


        System.out.println("上个月7天开始:"+getNeverSevenStartTimes());
        System.out.println("上个月7天结束:"+getNeverSevenEndTimes());

        System.out.println("今天开始时间:"+getTodayStartTime());
        System.out.println("今天结束时间:"+getTodayEndTime());

        System.out.println("昨天开始时间:"+getYesterdayStartTime());
        System.out.println("昨天结束时间:"+getYesterdayEndTime());


        System.out.println("季度开始:"+getCurrentQuarterStartTime());
        System.out.println("季度结束:"+getCurrentQuarterEndTime());

        System.out.println("上个季度开始:"+getCurrentQuarterStartTimes());
        System.out.println("上个季度结束:"+getCurrentQuarterEndTimes());



    }
    /**
     * 获得上周第一天 周日 00:00:00
     */
    public static Date getWeekStartDay() {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DAY_OF_WEEK, 1);
        calendar.add(Calendar.DATE, -7);
        return DateUtil.beginOfDay(calendar.getTime());
    }

    /**
     * 获得上周最后一天 周六 23:59:59
     */
    public static Date getWeekEndDay() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(getWeekStartDay());
        calendar.add(Calendar.DATE, 6);
        return DateUtil.endOfDay(calendar.getTime());
    }

    /**
     * 获得本周第一天 周日 00:00:00
     */
    public static Date getCurrentWeekStartDay() {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DAY_OF_WEEK, 2);
        return DateUtil.beginOfDay(calendar.getTime());
    }

    /**
     * 获得本周最后一天 周六 23:59:59
     */
    public static Date getCurrentWeekEndDay() {
        Calendar cal = Calendar.getInstance();
        cal.setTime(getCurrentWeekStartDay());
        cal.add(Calendar.DATE, 6);
        return DateUtil.endOfDay(cal.getTime());
    }

    /**
     * 近七天开始时间
     *
     * @return
     */
    public static Date getNeverSevenStartTime() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.add(Calendar.DATE, -6);
        return DateUtil.beginOfDay(calendar.getTime());
    }

    /**
     * 近七天结束时间
     *
     * @return
     */
    public static Date getNeverSevenEndTime() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(getNeverSevenStartTime());
        calendar.add(Calendar.DATE, 6);
        return DateUtil.endOfDay(calendar.getTime());
    }

    /**
     * 近三天开始时间
     *
     * @return
     */
    public static Date getNeverThreeStartTime() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.add(Calendar.DATE, -2);
        return DateUtil.beginOfDay(calendar.getTime());
    }

    /**
     * 近三天结束时间
     *
     * @return
     */
    public static Date getNeverThreeEndTime() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(getNeverThreeStartTime());
        calendar.add(Calendar.DATE, 2);
        return DateUtil.endOfDay(calendar.getTime());
    }
    /**
     * 上月近三天开始时间
     *
     * @return
     */
    public static Date getNeverThreeStartTimes() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.add(Calendar.DATE, -2);
        calendar.set(Calendar.MONTH,calendar.get(Calendar.MONTH)-1);
        return DateUtil.beginOfDay(calendar.getTime());
    }

    /**
     * 上月近三天结束时间
     *
     * @return
     */
    public static Date getNeverThreeEndTimes() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(getNeverThreeStartTimes());
        calendar.add(Calendar.DATE, 2);
        return DateUtil.endOfDay(calendar.getTime());
    }
    /**
     * 上月近七天开始时间
     *
     * @return
     */
    public static Date getNeverSevenStartTimes() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.set(Calendar.MONTH,calendar.get(Calendar.MONTH)-1);
        calendar.add(Calendar.DATE, -6);

        return DateUtil.beginOfDay(calendar.getTime());
    }

    /**
     * 上月近七天结束时间
     *
     * @return
     */
    public static Date getNeverSevenEndTimes() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(getNeverSevenStartTimes());
        calendar.add(Calendar.DATE, 6);
        return DateUtil.endOfDay(calendar.getTime());
    }
    /**
     * 昨天开始时间
     *
     * @return
     */
    public static Date getYesterdayStartTime() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.add(Calendar.DATE, -1);
        return DateUtil.beginOfDay(calendar.getTime());
    }

    /**
     * 昨天结束时间
     *
     * @return
     */
    public static Date getYesterdayEndTime() {
        return DateUtil.endOfDay(getYesterdayStartTime());
    }

    /**
     * 今天开始时间
     *
     * @return
     */
    public static Date getTodayStartTime() {
        return DateUtil.beginOfDay(new Date());
    }

    /**
     * 今天结束时间
     *
     * @return
     */
    public static Date getTodayEndTime() {
        return DateUtil.endOfDay(new Date());
    }

    /**
     * 当前季度的结束时间,
     *
     * @return
     */
    public static Date getCurrentQuarterEndTime() {
        Calendar cal = Calendar.getInstance();
        cal.setTime(getCurrentQuarterStartTime());
        cal.add(Calendar.MONTH, 3);
        cal.set(Calendar.DATE,0);
        return DateUtil.endOfDay(cal.getTime());
    }
    public static Date getCurrentQuarterStartTime() {
        Calendar c = Calendar.getInstance();
        int currentMonth = c.get(Calendar.MONTH) + 1;
        SimpleDateFormat longSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat shortSdf = new SimpleDateFormat("yyyy-MM-dd");
        Date now = null;
        try {
            if (currentMonth >= 1 && currentMonth <= 3)
                c.set(Calendar.MONTH, 0);
            else if (currentMonth >= 4 && currentMonth <= 6)
                c.set(Calendar.MONTH, 3);
            else if (currentMonth >= 7 && currentMonth <= 9)
                c.set(Calendar.MONTH, 4);
            else if (currentMonth >= 10 && currentMonth <= 12)
                c.set(Calendar.MONTH, 9);
            c.set(Calendar.DATE, 1);
            now = longSdf.parse(shortSdf.format(c.getTime()) + " 00:00:00");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return DateUtil.beginOfDay(now);
    }

    /**
     * 当前季度的结束时间,即上个季度
     *
     * @return
     */
    public static Date getCurrentQuarterEndTimes() {
        Calendar cal = Calendar.getInstance();
        cal.setTime(getCurrentQuarterStartTimes());
        cal.add(Calendar.MONTH, 3);
        cal.set(Calendar.DATE,0);
        return DateUtil.endOfDay(cal.getTime());
    }
    public static Date getCurrentQuarterStartTimes() {
        Calendar c = Calendar.getInstance();
        int currentMonth = c.get(Calendar.MONTH) + 1;
        SimpleDateFormat longSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat shortSdf = new SimpleDateFormat("yyyy-MM-dd");
        Date now = null;
        try {
            if (currentMonth >= 1 && currentMonth <= 3)
                c.set(Calendar.MONTH, 0);
            else if (currentMonth >= 4 && currentMonth <= 6)
                c.set(Calendar.MONTH, 3);
            else if (currentMonth >= 7 && currentMonth <= 9)
                c.set(Calendar.MONTH, 4);
            else if (currentMonth >= 10 && currentMonth <= 12)
                c.set(Calendar.MONTH, 9);
            c.set(Calendar.DATE, 1);
            c.set(Calendar.MONTH,c.get(Calendar.MONTH)-3);
            now = longSdf.parse(shortSdf.format(c.getTime()) + " 00:00:00");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return DateUtil.beginOfDay(now);
    }
}

  • 7
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值