zoukankan      html  css  js  c++  java
  • 【工具类】Stream流构建指定长度的时间集合

    package com.gabriel.stage.utils;
    
    import cn.hutool.core.date.DateUnit;
    import cn.hutool.core.date.DateUtil;
    import org.apache.commons.lang3.time.DateUtils;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.time.*;
    import java.time.format.DateTimeFormatter;
    import java.time.temporal.ChronoUnit;
    import java.time.temporal.TemporalUnit;
    import java.util.Date;
    import java.util.List;
    import java.util.stream.Collectors;
    import java.util.stream.Stream;
    
    
    /**
     * @author: Gabriel
     * @date: 2019/12/3 22:49
     * @description 日期时间转换工具类
     */
    public class CommonDateUtil {
    
        public static final String FORMATTER_YYYY_M_MDD_H_HMMSS = "yyyy-MM-dd HH:mm:ss";
    
        public static final String FORMATTER_YYYY_M_MDD_H_HMM = "yyyy-MM-dd HH:mm";
    
        public static final String FORMATTER_YYYY_M_MDD = "yyyy-MM-dd";
    
    
        /**
         * 根据起止时间构建一个时间列表 Date->List<Date>
         * @param begin 开始时间 {@link java.util.Date}
         * @param end 结束时间   {@link java.util.Date}
         * @return
         */
        public static List<Date> collectDateByDates(Date begin,Date end){
            return Stream.iterate(begin,date -> DateUtils.addDays(date,1))
                    .limit(DateUtil.between(begin,end,DateUnit.DAY))
                    .collect(Collectors.toList());
        }
    
        /**
         * 根据起止时间构建一个时间字符串列表 Date->List<String>
         * @param begin 开始时间 {@link java.util.Date}
         * @param end 结束时间   {@link java.util.Date}
         * @return
         */
        public static List<String> collectStrDateByDates(Date begin,Date end){
            return Stream.iterate(begin,date -> DateUtils.addDays(date,1))
                    .limit(DateUtil.between(begin,end,DateUnit.DAY))
                    .map(date -> DateUtil.format(date,CommonDateUtil.FORMATTER_YYYY_M_MDD))
                    .collect(Collectors.toList());
        }
    
    
        /**
         * 根据起止时间构建一个时间字符串列表 LocalDate ->List<Date>
         * @param begin 开始时间 {@link java.util.Date}
         * @param end 结束时间   {@link java.util.Date}
         * @return
         */
        public static List<Date> collectDateByLocalDates(LocalDate begin, LocalDate end){
            return Stream.iterate(begin, localDate -> localDate.plusDays(1))
                    .limit(ChronoUnit.DAYS.between(begin, end) + 1)
                    .map(x->Date.from(x.atStartOfDay(ZoneId.systemDefault()).toInstant()))
                    .collect(Collectors.toList());
        }
    
        /**
         * 根据起止时间构建一个时间字符串列表 LocalDate ->List<String>
         * @param begin 开始时间 {@link java.time.LocalDate}
         * @param end 结束时间   {@link java.time.LocalDate}
         * @return
         */
        public static List<String> collectStrDateByLocalDates(LocalDate begin, LocalDate end){
            return Stream.iterate(begin, localDate -> localDate.plusDays(1))
                    .limit(ChronoUnit.DAYS.between(begin, end) + 1)
                    .map(LocalDate::toString)
                    .collect(Collectors.toList());
        }
    }
  • 相关阅读:
    sql语句查询数据库中含有某字符串的表名
    PHP复制文件夹及文件夹内的文件
    Vue.js绑定内联样式
    Vue模板语法V-bind
    Vue实例
    Vue.js几个简单用法
    Git Pull Failed: cannot lock ref 'refs/remotes/origin/xxxxxxxx': unable to resolve ref
    SSM 框架详细整合教程(IDEA版)(Spring+SpringMVC+MyBatis)
    IntelliJ IDEA(2017/2018)安装图解与破解教程
    Hadoop集群单机伪分布搭建
  • 原文地址:https://www.cnblogs.com/july-sunny/p/12493484.html
Copyright © 2011-2022 走看看