首页 > 其他 > 详细

【工具类】Stream流构建指定长度的时间集合

时间:2020-03-14 19:18:15      阅读:101      评论:0      收藏:0      [点我收藏+]
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());
    }
}

 

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());
}

【工具类】Stream流构建指定长度的时间集合

原文:https://www.cnblogs.com/gabriel-y/p/12493484.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!