LocalDate.now().minusDays( 10 )
最好指定时区。LocalDate.now( ZoneId.of( "America/Montreal" ) ).minusDays( 10 )
细节
旧的日期时间类与早期版本的Java捆绑在一起,如java.util.Date/.Calendar已经被证明是麻烦的,混乱的,有缺陷的。避开他们。
java.time
Java 8和更高版本用新的java.time框架取代了这些旧类。看见补习..由JSR 310,灵感来自尤达-时间,并由三次-额外项目。Threeten-Backport项目将类移植到Java 6&7;将ThreeTenABP项目移植到Android。
这个问题含糊不清,不清楚是只要求约会,还是要求约会时间。
LocalDate
对于仅用于日期的,而不需要一天的时间,请使用LocalDate班级,等级。请注意,在确定日期(如“今天”)时,时区是至关重要的。LocalDate today = LocalDate.now( ZoneId.of( "America/Montreal" ) );LocalDate tenDaysAgo = today.minusDays( 10 );
ZonedDateTime
如果您指的是约会时间,请使用Instant类中获取时间线的时间。世界协调时..从那里,调整到一个时区,以获得一个ZonedDateTime对象。Instant now = Instant.now(); // UTC.ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );ZonedDateTime tenDaysAgo = zdt.minusDays( 10 );
关于java.time
若要了解更多信息,请参见Oracle教程..并搜索堆栈溢出的许多例子和解释。规格是JSR 310.
你们可以交换java.time对象直接使用数据库。用JDBC驱动程序符合JDBC 4.2或者晚些时候。不需要字符串,不需要字符串java.sql.*上课。
在哪里获得java.time类?JavaSE 8, JavaSE 9, JavaSE 10,后来内置的。
带有捆绑实现的标准JavaAPI的一部分。
Java 9添加了一些次要的特性和修复。
JavaSE 6和
JavaSE 7中的大部分java.time功能都被移植到Java 6&7中。
Threeten-Backport.
安卓Androidbundle实现的以后版本的java.time类。
对于早期的Android(<26),
ThreeTenABP项目适应
Threeten-Backport(上文所述)。看见
如何使用ThreeTenaBP….
这个三次-额外项目使用其他类扩展java.time。这个项目是java.time将来可能添加的一个试验场。您可能会在这里发现一些有用的类,例如Interval, YearWeek, YearQuarter,和更多.