java8 LocalDate类遍历两个日期间所有日期

/**
	 * 获取两个日期间隔的所有日期
	 * @param start 格式必须为'2018-01-25'
	 * @param end 格式必须为'2018-01-25'
	 * @return
	 */
	public static List<String> getBetweenDate(String start, String end){
		List<String> list = new ArrayList<>();
		LocalDate startDate = LocalDate.parse(start);
		LocalDate endDate = LocalDate.parse(end);
		
		long distance = ChronoUnit.DAYS.between(startDate, endDate);
		if (distance < 1) {
			return list;
		}
		Stream.iterate(startDate, d -> {
			return d.plusDays(1);
		}).limit(distance + 1).forEach(f -> {
			list.add(f.toString());
	    });
		return list;
	}

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用 JavaDateTimeFormatter 可以方便地获取两个日期之间的所有日期。首先,定义一个 DateTimeFormatter 对象,然后使用 LocalDate.parse() 方法把开始和结束日期转换成 LocalDate 对象。然后,使用 LocalDate.until() 方法获取两个日期之间的间隔时间,最后将间隔时间添加到开始日期,以此获取到两个日期之间的所有日期。 ### 回答2: 在Java中,我们可以使用`java.time.LocalDate`来获取两个日期之间的所有日期。首先,我们需要使用`LocalDate.parse()`方法将字符串日期转换为`LocalDate`对象。然后,我们可以使用`LocalDate.until()`方法来计算两个日期之间的天数差。 下面是一个示例代码来获取两个日期之间的所有日期: ```java import java.time.LocalDate; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; public class GetDatesBetween { public static List<LocalDate> getDatesBetween(LocalDate startDate, LocalDate endDate) { List<LocalDate> datesBetween = new ArrayList<>(); long numOfDays = ChronoUnit.DAYS.between(startDate, endDate); for (int i = 0; i <= numOfDays; i++) { LocalDate currentDate = startDate.plusDays(i); datesBetween.add(currentDate); } return datesBetween; } public static void main(String[] args) { LocalDate startDate = LocalDate.parse("2021-01-01"); LocalDate endDate = LocalDate.parse("2021-01-05"); List<LocalDate> dates = getDatesBetween(startDate, endDate); for (LocalDate date : dates) { System.out.println(date); } } } ``` 在上面的代码中,我们定义了一个名为`getDatesBetween`的静态方法,该方法接受起始日期和结束日期作为参数,并返回两个日期之间的所有日期的列表。我们使用`ChronoUnit.DAYS.between()`方法来计算两个日期之间的天数差,并使用`LocalDate.plusDays()`方法在起始日期的基础上逐个增加天数,最后将每个日期添加到结果列表中。 在`main`方法中,我们示范了如何使用这个方法获取从"2021-01-01"到"2021-01-05"之间的所有日期,并将它们逐个输出到控制台上。 运行上述代码,将会输出以下结果: ``` 2021-01-01 2021-01-02 2021-01-03 2021-01-04 2021-01-05 ``` 注意:上述代码中使用的是Java 8引入的`java.time.LocalDate`。如果你使用的是旧版本的Java,则可以考虑使用Joda-Time库中的`org.joda.time.LocalDate`来实现相同的功能。 ### 回答3: 在Java中,可以使用`java.time.LocalDate`和`java.util.ArrayList`来获取两个日期之间的所有日期。以下是一个简单的示例代码: ```java import java.time.LocalDate; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; public class DateRangeExample { public static void main(String[] args) { LocalDate startDate = LocalDate.of(2022, 1, 1); LocalDate endDate = LocalDate.of(2022, 1, 10); List<LocalDate> dateRange = getDateRange(startDate, endDate); for (LocalDate date : dateRange) { System.out.println(date); } } public static List<LocalDate> getDateRange(LocalDate startDate, LocalDate endDate) { List<LocalDate> dateRange = new ArrayList<>(); long numOfDays = ChronoUnit.DAYS.between(startDate, endDate); for (int i = 0; i <= numOfDays; i++) { dateRange.add(startDate.plusDays(i)); } return dateRange; } } ``` 在上述代码中,我们定义了一个`getDateRange`方法,该方法接受起始日期`startDate`和结束日期`endDate`作为参数,并返回一个包含这两个日期之间所有日期的列表。我们使用`ChronoUnit.DAYS.between`方法来计算起始日期和结束日期之间的天数差。然后,我们使用`LocalDate.plusDays`方法依次增加起始日期的天数,并将每个日期添加到日期范围列表中。最后,我们通过遍历日期范围列表,将所有日期打印出来。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值