java8获取时间开始和结束

本文介绍了一种在Java中获取指定日期当天的开始时间和结束时间的方法。通过使用LocalDateTime和ZoneId,可以精确地获取到当天的最小时间和最大时间,这对于进行时间范围内的数据检索和处理非常有用。
 /**
     *
     * @description: 获得当天最小时间
     * @author: maple
     * @date: 2020年7月29日
     * @param date
     * @return
     */
    public static Date getStartOfDay(Date date) {
        LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()),
                ZoneId.systemDefault());
        LocalDateTime startOfDay = localDateTime.with(LocalTime.MIN);
        return Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant());
    }

    /**
     *
     * @description: 获得当天最大时间
     * @author: Jeff
     * @date: 2020年7月29日
     * @param date
     * @return
     */
    public static Date getEndOfDay(Date date) {
        LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()),
                ZoneId.systemDefault());
        LocalDateTime endOfDay = localDateTime.with(LocalTime.MAX);
        return Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant());
    }
    ```
Java中,获取上周开始结束时间可借助`java.util.Calendar`类或者`java.time`包来实现。 ### 使用`java.util.Calendar`类实现 ```java import java.util.Calendar; import java.util.Date; public class LastWeekTime { public static void main(String[] args) { // 获取当前时间的Calendar实例 Calendar calendar = Calendar.getInstance(); // 设置为上周 calendar.add(Calendar.WEEK_OF_YEAR, -1); // 设置为上周的开始时间(周一) calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); Date startDate = calendar.getTime(); // 设置为上周的结束时间(周日) calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); calendar.set(Calendar.MILLISECOND, 999); Date endDate = calendar.getTime(); System.out.println("上周开始时间: " + startDate); System.out.println("上周结束时间: " + endDate); } } ``` ### 使用`java.time`包实现 ```java import java.time.DayOfWeek; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; import java.util.Date; public class LastWeekTimeJava8 { public static void main(String[] args) { // 获取当前日期 LocalDate now = LocalDate.now(); // 获取上周的周一 LocalDate lastMonday = now.minusWeeks(1).with(DayOfWeek.MONDAY); LocalDateTime startDateTime = lastMonday.atStartOfDay(); // 获取上周的周日 LocalDate lastSunday = now.minusWeeks(1).with(DayOfWeek.SUNDAY); LocalDateTime endDateTime = lastSunday.atTime(LocalTime.MAX); // 将LocalDateTime转换为Date Date startDate = Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant()); Date endDate = Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant()); System.out.println("上周开始时间: " + startDate); System.out.println("上周结束时间: " + endDate); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值