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

该文章介绍了如何使用Java编程创建一个名为DateUtils的工具类,用于将给定日期分解为24小时的时间段,并展示了如何获取每个时间范围的起始和结束时间。
摘要由CSDN通过智能技术生成
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);
        }
    }
}


在这里插入图片描述

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Calendar 类来获取指定季度的开始时间结束时间。下面是一个示例代码: ```java import java.util.Calendar; public class QuarterTime { public static void main(String[] args) { int year = 2021; // 年份 int quarter = 1; // 季度,1表示第一季度,2表示第二季度,以此类推 Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, year); // 获取季度的月份范围 int startMonth = (quarter - 1) * 3 + 1; int endMonth = startMonth + 2; // 设置季度的开始时间 calendar.set(Calendar.MONTH, startMonth - 1); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); long startTimeInMillis = calendar.getTimeInMillis(); // 设置季度的结束时间 calendar.set(Calendar.MONTH, endMonth - 1); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); calendar.set(Calendar.MILLISECOND, 999); long endTimeInMillis = calendar.getTimeInMillis(); System.out.println("开始时间:" + startTimeInMillis); System.out.println("结束时间:" + endTimeInMillis); } } ``` 在上面的代码中,我们首先设置了年份和季度,然后根据季度的月份范围计算出开始时间结束时间。在设置时间时,我们使用了 Calendar 类的 set 方法来设置年、月、日、时、分、秒和毫秒。注意,在设置月份时需要减一,因为 Calendar 类中的月份是从0开始的。 最后,我们使用 getTimeInMillis 方法来获取时间的毫秒表示。如果需要获取 Date 对象,可以使用 new Date(startTimeInMillis) 和 new Date(endTimeInMillis) 来构造。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值