Java获取指定日期24小时段开始时间和结束时间

该文章介绍了如何使用Java编程创建一个名为DateUtils的工具类,用于将给定日期分解为24小时的时间段,并展示了如何获取每个时间范围的起始和结束时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class DateUtils {

    public static List<TimeRange> get24HourTimeRanges(Date date) {
        List<TimeRange> timeRanges = new ArrayList<>();

        LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), java.time.ZoneId.systemDefault());

        for (int i = 0; i < 24; i++) {
            int hour = i % 24; // 使用模运算确保小时数在0到23之间
            LocalDateTime startTime = localDateTime.withHour(hour).withMinute(0).withSecond(0).withNano(0);
            LocalDateTime endTime = localDateTime.withHour(hour).withMinute(59).withSecond(59).withNano(999999999);

            timeRanges.add(new TimeRange(startTime, endTime));
        }

        return timeRanges;
    }

    public static class TimeRange {
        private LocalDateTime startTime;
        private LocalDateTime endTime;

        public TimeRange(LocalDateTime startTime, LocalDateTime endTime) {
            this.startTime = startTime;
            this.endTime = endTime;
        }

        public LocalDateTime getStartTime() {
            return startTime;
        }

        public LocalDateTime getEndTime() {
            return endTime;
        }

        @Override
        public String toString() {
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            return startTime.format(formatter) + " - " + endTime.format(formatter);
        }
    }

    public static void main(String[] args) {
        Date inputDate = new Date(); // 你可以传入任意的日期
        List<TimeRange> timeRanges = get24HourTimeRanges(inputDate);

        for (TimeRange timeRange : timeRanges) {
            // LocalDateTime转Date
        	Date start = Date.from(timeRange.getStartTime().atZone(ZoneId.systemDefault()).toInstant());
            Date end = Date.from(timeRange.getEndTime().atZone(ZoneId.systemDefault()).toInstant());
            
            System.out.println(start);
			System.out.println(end);
            System.out.println(dateRange);
        }
    }
}


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值