快速获取一天的开始时间和结束时间

2022-11-21 11:48:57

前言

在日常开发中,我们经常需要获取某一天的开始时间和结束时间,然后再去做一些逻辑处理。这里提供两种demo。

java8之前

这种是采用手动设置日期的时分秒为需要的格式,具体代码如下

    @Test
    public void getLastDayTime() {
        Date date = new Date();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        //一天的开始时间 yyyy:MM:dd 00:00:00
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        Date dayStart = calendar.getTime();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String startStr = simpleDateFormat.format(dayStart);
        System.out.println("开始时间" + startStr);

        //一天的结束时间 yyyy:MM:dd 23:59:59
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        calendar.set(Calendar.MILLISECOND, 999);
        Date dayEnd = calendar.getTime();
        String endStr = simpleDateFormat.format(dayEnd);
        System.out.println("结束时间" + endStr);
    }

上述代码能实现功能,但是代码量有点迷。

java8的时间工具包

java种提供了新的时间处理工具,我们完全可以直接使用,具体代码如下

  @Test
    public void testLocalDateTime() {
        LocalDateTime startTime = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
        String startTimeStr = startTime.format(DateTimeFormatter.ofPattern(
        "yyyy-MM-dd HH:mm:ss"));
        System.out.println("开始时间" + startTimeStr);
        LocalDateTime endTime = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
        String endTimeStr = endTime.format(DateTimeFormatter.ofPattern(
        "yyyy-MM-dd HH:mm:ss"));
        System.out.println("结束时间" + endTimeStr);

    }

同样是获取开始时间和结束时间,代码量显而易见。下面是获取某一天的开始时间和截至时间

    public void getEndOfDay(Date date) {
        LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()),
        ZoneId.systemDefault());
        LocalDateTime endOfDay = localDateTime.with(LocalTime.MAX);
        String endTimeStr = endOfDay.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        System.out.println("结束时间" + endTimeStr);
    }

    public void getStartOfDay(Date date) {
        LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), 
        ZoneId.systemDefault());
        LocalDateTime startOfDay = localDateTime.with(LocalTime.MIN);
        String startTimeStr = startOfDay.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        System.out.println("开始时间" + startTimeStr);
    }
  • 作者:爱琴孩
  • 原文链接:https://aiqinhai.blog.csdn.net/article/details/120930198
    更新时间:2022-11-21 11:48:57