java获取两个日期之间的日期_Java 8 LocalDate-如何获取两个日期之间的所有日期?...

tl; dr

使用Java 9及更高版本中来自java.util.Date的流,扩展Singh的“好的答案”。

today // Determine your beginning `LocalDate` object.

.datesUntil( // Generate stream of `LocalDate` objects.

today.plusMonths( 1 ) // Calculate your ending date, and ask for a stream of dates till then.

) // Returns the stream.

.collect( Collectors.toList() ) // Collect your resulting dates in a `List`.

.toString() // Generate text representing your found dates.

[2018-09-20、2018-09-21、2018-09-22、2018-09-23、2018-09-24、2018-09-25、2018-09-26、2018-09-27、2018年 -09-28、2018-09-29、2018-09-30、2018-10-01、2018-10-02、2018-10-03、2018-10-04、2018-10-05、2018-10 -06,2018-10-07,2018-10-08,2018-10-09,2018-10-10,2018-10-11,2018-10-12,2018-10-13,2018-10-14 ,2018-10-15、2018-10-16、2018-10-17、2018-10-18、2018-10-19]

java.util.Date流

从Java 9开始,您可以要求提供日期流。 致电java.util.Date。

首先确定今天的日期。 这需要一个时区。 在任何给定的时刻,日期都会在全球范围内变化。

ZoneId z = ZoneId.of( "Pacific/Auckland" ) ;

LocalDate today = LocalDate.now( z ) ;

确定您的结束日期。

LocalDate stop = today.plusMonths( 1 ) ;

要求从开始到结束的日期流。

Stream< LocalDate > stream = today.datesUntil( today.plusMonths( 1 ) );

从该流中提取日期,将其收集到java.util.Date中。

List< LocalDate > datesForMonthFromToday = stream.collect( Collectors.toList() );

打印日期列表,以标准ISO 8601格式生成文本。

System.out.println( datesForMonthFromToday );

关于java.time

java.time框架内置于Java 8及更高版本中。 这些类别取代了麻烦的旧旧日期时间类别,例如java.util.Date、YearQuarter和YearQuarter。

现在处于维护模式的Joda-Time项目建议迁移到java.time类。

要了解更多信息,请参见Oracle教程。 并在Stack Overflow中搜索许多示例和说明。 规格为JSR 310。

您可以直接与数据库交换java.time对象。 使用与JDBC 4.2或更高版本兼容的JDBC驱动程序。 不需要字符串,不需要YearQuarter类。

在哪里获取java.time类?

Java SE 8,Java SE 9,Java SE 10,Java SE 11和更高版本-标准Java API的一部分,具有捆绑的实现。Java 9添加了一些次要功能和修复。

Java SE 6和Java SE 7大多数Java.time功能都在ThreeTen-Backport中反向移植到Java 6和7。

安卓更高版本的Android捆绑了java.time类的实现。

对于早期的Android(<26),ThreeTenABP项目改编了ThreeTen-Backport(如上所述)。 请参阅如何使用ThreeTenABP…。

ThreeTen-Extra项目使用其他类扩展了java.time。 该项目为将来可能在java.time中添加内容提供了一个试验场。 您可能会在这里找到一些有用的类,例如YearQuarter、YearQuarter、YearQuarter等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值