Java_获取两个日期中间的日期

yyyyMMdd形式
private List<Date> dateSplit(Date startDate, Date endDate)  
            throws Exception {
		
        if (!startDate.before(endDate)&&startDate.compareTo(endDate)==1){  
            throw new Exception("开始时间应该在结束时间之后");  
        }  
              
        Long spi = endDate.getTime() - startDate.getTime();  
        Long step = spi / (24 * 60 * 60 * 1000);// 相隔天数  
  
        List<Date> dateList = new ArrayList<Date>();  
        dateList.add(startDate);  
        for (int i = 1; i <= step; i++) {  
            dateList.add(new Date(dateList.get(i - 1).getTime()  
                    + (24 * 60 * 60 * 1000)));// 比上一天+一  
        }  
        return dateList;  
    }


yyyyMMddHH形式


	private List<Date> dateHHMMSplit(Date startDate, Date endDate)  
            throws Exception {
		
        if (!startDate.before(endDate)&&startDate.compareTo(endDate)==1){  
            throw new Exception("开始时间应该在结束时间之后");  
        }  
              
        Long spi = endDate.getTime() - startDate.getTime();  
        Long step = spi / (10 * 60 * 1000);// 相隔小时数 
  
        List<Date> dateList = new ArrayList<Date>();  
        dateList.add(startDate);  
        for (int i = 1; i <= step; i++) {  
            dateList.add(new Date(dateList.get(i - 1).getTime()  
                    + (10 * 60 * 1000)));// 加1小时
        }  
        return dateList;  
    }


Java中的`Date`类型已经被标记为不推荐使用,建议使用Java 8的`LocalDate`类和相关的日期时间类。如果你需要使用`Date`类型,可以将`Date`类型转换为`LocalDate`类型,进行日期计算,再将结果转换回`Date`类型。具体实现如下: ```java import java.time.LocalDate; import java.time.ZoneId; import java.util.ArrayList; import java.util.Date; import java.util.List; public class Main { public static void main(String[] args) { Date startDate = Date.from(LocalDate.of(2021, 10, 1).atStartOfDay(ZoneId.systemDefault()).toInstant()); Date endDate = Date.from(LocalDate.of(2021, 10, 5).atStartOfDay(ZoneId.systemDefault()).toInstant()); List<Date> datesInRange = new ArrayList<>(); LocalDate start = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); LocalDate end = endDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); for (LocalDate date = start; date.isBefore(end.plusDays(1)); date = date.plusDays(1)) { Date currentDate = Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant()); datesInRange.add(currentDate); } for (Date date : datesInRange) { System.out.println(date); } } } ``` 输出结果: ``` Thu Oct 01 00:00:00 CST 2021 Fri Oct 02 00:00:00 CST 2021 Sat Oct 03 00:00:00 CST 2021 Sun Oct 04 00:00:00 CST 2021 Mon Oct 05 00:00:00 CST 2021 ``` 这里使用了Java 8的`LocalDate`类和相关的日期时间类来进行日期计算,再将结果转换回`Date`类型。注意,需要使用`ZoneId.systemDefault()`来指定时区,避免出现错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值