如何获取任意一天日期所在周的范围时间?

目录

1、详解

主要逻辑:

2、工具类中方法的定义


1、详解

// 获取当前日期
LocalDate now = LocalDate.now(); 

// 获取本周第一天
LocalDate firstDayOfWeek = now.minusDays(now.getDayOfWeek().getValue() - 1);

// 获取本周第一天的00:00时间
LocalDateTime weekStartDate = firstDayOfWeek.atStartOfDay();

// 获取本周最后一天 
LocalDate lastDayOfWeek = now.plusDays(7 - now.getDayOfWeek().getValue());  

// 获取本周最后一天的23:59:59时间
LocalDateTime weekEndDate = LocalDateTime.of(lastDayOfWeek, LocalTime.MAX);

// 输出
System.out.println("weekStartDate: " + weekStartDate); 
System.out.println("weekEndDate: " + weekEndDate);

主要逻辑:

1. 获取当前日期now
2. 通过now减去当前weekday数值 minusDays(now.getDayOfWeek().getValue() - 1) 来获取本周第一天
3. 在第一天基础上加上7天减去当前weekday数值 plusDays(7 - now.getDayOfWeek().getValue()) 来获取本周最后一天
4. 组合时间获取本周开始和结束时间


2、方法的定义

     /**
     * 1. now.getDayOfWeek().getValue() 获取now这一天是这一周的第几天,会返回1-7。
     * 2. now.minusDays(now.getDayOfWeek().getValue() - 1) 获取now这一周的第一天。
     * 3. atStartOfDay() 获取那一天的00:00:00时间。
     * @param now
     * @return
     */
    public static LocalDateTime getWeekBeginTime(LocalDate now) {
        return now.minusDays(now.getDayOfWeek().getValue() - 1).atStartOfDay();
    }

    /**
     * 1. now.getDayOfWeek().getValue() 同上,获取这一周的第几天。
     * 2. 8 - now.getDayOfWeek().getValue() 计算出这一周的最后一天离now还有几天。
     * 3. now.plusDays(8 - now.getDayOfWeek().getValue()) 获取这一周的最后一天。
     * 4. LocalTime.MAX 获取23:59:59时间。
     * @param now
     * @return
     */
    public static LocalDateTime getWeekEndTime(LocalDate now) {
        return LocalDateTime.of(now.plusDays(8 - now.getDayOfWeek().getValue()), LocalTime.MAX);
    }

这样可以方便获取任意一天日期所在周的范围时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值