Calendar获取日期所在周、月份第一天、最后一天以及前一周内所有时间

前言

项目中经常使用到获取日期所在当前周、月份第一天、最后一天以及指定日期前一周等信息,通过Calendar获取对应信息。

1.获取指定日期所在周的第一天和最后一天

获取日期所在周的第一天和最后一天
    public static void getWeek() {
        //大写的MM代表月份,小写的mm代表分钟。
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String time = "2022-11-01 15:56:16";
        Date date = new Date();
        try{
            date = sdf.parse(time);
        }catch (ParseException e){
            e.printStackTrace();
        }
        Calendar calendarWeek =Calendar.getInstance();
        calendarWeek.setTime(date);//指定日期,要获得当前时间则直接new Date()
        calendarWeek.add(Calendar.WEEK_OF_MONTH,0);//0当前周,-1前一周,1后一周,以此类推
        calendarWeek.setFirstDayOfWeek(Calendar.MONDAY);
        calendarWeek.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        System.out.println("日期所在周第一天:" + sdf.format(calendarWeek.getTime()));
        calendarWeek.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
        System.out.println("日期所在周最一天:" + sdf.format(calendarWeek.getTime()));
    }

2.获取指定日期所在月份的第一天和最后一天

获取指定日期所在月份的第一天和最后一天
     /**
     * 获取日期所在月份的第一天和最后一天
     */
    public static void getMonth() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String time = "2022-11-01 15:56:16";
        Date date = new Date();
        try{
            date = sdf.parse(time);
        }catch (ParseException e){
            e.printStackTrace();
        }
        Calendar calendarMonth =Calendar.getInstance();
        calendarMonth.setTime(date);
        calendarMonth.add(Calendar.MONTH, 0);
        calendarMonth.set(Calendar.DAY_OF_MONTH, calendarMonth.getActualMinimum(Calendar.DAY_OF_MONTH));
        System.out.println("月份第一天:" + sdf.format(calendarMonth.getTime()));
        calendarMonth.set(Calendar.DAY_OF_MONTH, calendarMonth.getActualMaximum(Calendar.DAY_OF_MONTH));
        System.out.println("月份最后一天:" + sdf.format(calendarMonth.getTime()));
    }

3.获取指定日期前一周所有时间

获取指定日期所在前一周所有时间
    /**
     * 获取指定日期所在前一周所有时间
     */
    public static void getDateInfo() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String time = "2022-11-01 15:56:16";
        Calendar calendar = new GregorianCalendar();
        Date date = new Date();
        try{
            date = sdf.parse(time);
        }catch (ParseException e){
            e.printStackTrace();
        }
        List<String> dateList = new ArrayList<>();
        calendar.setTime(date);
        calendar.set(Calendar.HOUR_OF_DAY,0);
        calendar.set(Calendar.MINUTE,0);
        calendar.set(Calendar.SECOND,0);
        Date dateNew = calendar.getTime();

        calendar.setTime(dateNew);
        Calendar calendar2 = new GregorianCalendar();
        calendar2.setTime(dateNew);
        calendar2.add(Calendar.DAY_OF_MONTH,-6);
        while(calendar2.before(calendar)){
            String eachDate = sdf.format(calendar2.getTime());
            calendar2.add(Calendar.DAY_OF_MONTH,1);
            dateList.add(eachDate);
        }
        dateList.add(sdf.format(dateNew));
    }
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值