仅供参考,Joda-Time 项目现在位于maintenance mode,团队建议迁移到java.time 类。
使用 java.time
LocalDate 类是 java.time,类似于 Joda-Time LocalDate。仅日期值,没有时间和时区。一个区别是 java.time 避开了工厂方法的构造函数。
LocalDate start = LocalDate.of( 2011 , 11 , 8 );
LocalDate stop = LocalDate.of( 2012 , 5 , 1 );
收集星期一。
List<LocalDate> mondays = new ArrayList<>();
TemporalAdjuster 接口提供了处理日期时间值的类。 TemporalAdjusters 类(注意复数名称)提供了各种实现。我们想要 nextOrSame 和 next 调整器,传递所需的 DayOfWeek.MONDAY 枚举对象。
LocalDate monday = start.with( TemporalAdjusters.nextOrSame( DayOfWeek.MONDAY ) );
while( monday.isBefore( stop ) ) {
mondays.add( monday );
// Set up the next loop.
monday = monday.plusWeeks( 1 );
}
顺便说一下,通常处理时间跨度的明智方法是半开放式,其中开始是包含,而结束是排他。因此,在上面的代码中,我们运行到但不包括 stop 日期。
如果结尾是inclusive,则使用isAfter的否定,例如
while( !monday.isAfter( stop ) ) {
//...
}
这里,monday 不在stop 之后表示它在stop 之前或之前。
关于java.time
java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 legacy 日期时间类,例如 java.util.Date、Calendar 和 SimpleDateFormat。
要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310。
Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。
您可以直接与您的数据库交换 java.time 对象。使用符合JDBC 4.2 或更高版本的JDBC driver。不需要字符串,不需要java.sql.* 类。 Hibernate 5 & JPA 2.2 支持 java.time。
从哪里获取 java.time 类?