Java根据指定日期按指定秒数切割时间

    public static final String START_TIME = "startTime";

    public static final String END_TIME = "endTime";
    /**
     * 根据指定日期按指定秒数切割时间
     *
     * @param localDate 日期
     * @param second    间隔多少秒
     * @return
     */
    public static List<Map<String, LocalDateTime>> splitDateBySecond(LocalDate localDate, long second) {
        LocalDateTime min = LocalDateTime.of(localDate, LocalTime.MIN);
        LocalDateTime max = LocalDateTime.of(localDate, LocalTime.MAX);
        List<Map<String, LocalDateTime>> list = new ArrayList<>();
        while (true) {
            LocalDateTime end = min.plusSeconds(second);
            Map<String, LocalDateTime> map = new HashMap<>(2);
            map.put(START_TIME, min);
            map.put(END_TIME, end);
            list.add(map);
            long until = end.until(max, ChronoUnit.SECONDS);
            if (until <= second) {
                map = new HashMap<>(2);
                map.put(START_TIME, end);
                map.put(END_TIME, max);
                list.add(map);
                break;
            }
            min = end;
        }
        return list;
    }

测试

    public static void main(String[] args) {
        List<Map<String, LocalDateTime>> list = splitDateBySecond(LocalDate.now(), 3600L);
        for (int i = 0; i < list.size(); i++) {
            Map<String, LocalDateTime> map = list.get(i);
            LocalDateTime min = map.get(START_TIME);
            if (i != 0) {
                min = min.plusSeconds(1L);
            }
            map.put(START_TIME, min);
        }
        //[{startTime=2020-07-29T00:00, endTime=2020-07-29T01:00}, {startTime=2020-07-29T01:00:01, endTime=2020-07-29T02:00}, {startTime=2020-07-29T02:00:01, endTime=2020-07-29T03:00}, {startTime=2020-07-29T03:00:01, endTime=2020-07-29T04:00}, {startTime=2020-07-29T04:00:01, endTime=2020-07-29T05:00}, {startTime=2020-07-29T05:00:01, endTime=2020-07-29T06:00}, {startTime=2020-07-29T06:00:01, endTime=2020-07-29T07:00}, {startTime=2020-07-29T07:00:01, endTime=2020-07-29T08:00}, {startTime=2020-07-29T08:00:01, endTime=2020-07-29T09:00}, {startTime=2020-07-29T09:00:01, endTime=2020-07-29T10:00}, {startTime=2020-07-29T10:00:01, endTime=2020-07-29T11:00}, {startTime=2020-07-29T11:00:01, endTime=2020-07-29T12:00}, {startTime=2020-07-29T12:00:01, endTime=2020-07-29T13:00}, {startTime=2020-07-29T13:00:01, endTime=2020-07-29T14:00}, {startTime=2020-07-29T14:00:01, endTime=2020-07-29T15:00}, {startTime=2020-07-29T15:00:01, endTime=2020-07-29T16:00}, {startTime=2020-07-29T16:00:01, endTime=2020-07-29T17:00}, {startTime=2020-07-29T17:00:01, endTime=2020-07-29T18:00}, {startTime=2020-07-29T18:00:01, endTime=2020-07-29T19:00}, {startTime=2020-07-29T19:00:01, endTime=2020-07-29T20:00}, {startTime=2020-07-29T20:00:01, endTime=2020-07-29T21:00}, {startTime=2020-07-29T21:00:01, endTime=2020-07-29T22:00}, {startTime=2020-07-29T22:00:01, endTime=2020-07-29T23:00}, {startTime=2020-07-29T23:00:01, endTime=2020-07-29T23:59:59.999999999}]
        System.out.println(list);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值