我们如何在Java中增加或减少日期(JUST DATE)

时间:2018-06-26 05:02:04

标签: java

我想以mySQL格式显示完整的日期,但不想与它一起显示时间。

想要增加或减少执行操作的日期

1 个答案:

答案 0 :(得分:0)

tl; dr

myResultSet.getObject( … , Instant.class )
.atZone( ZoneId.of( "Pacific/Auckland" ) ) 
.toLocalDate()
.toString() 

详细信息

对于类型类似于SQL标准TIMESTAMP WITH TIME ZONE的列,请以Instant检索。

Instant instant = myResultSet.getObject( … , Instant.class ) ;

Instant始终是UTC。根据某个地区的人们使用的挂钟时间,将其调整为您想要感知日期的时区。在任何给定的时刻,日期在世界各地都会有所不同。在印度Asia/Kolkata可能是“明天”,而在加拿大America/Montreal仍然是“昨天”。

ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
ZonedDateTime zdt = instant.atZone( z ) ;

仅提取日期,因为这是您要关注的重点。

LocalDate ld = zdt.toLocalDate() ; 

使用各种加/减方法来增加或减少天,周,月,年或它们的组合(Period)。

LocalDate dayAfter = ld.plusDays( 1 ) ;

或者…

Period p = Period.parse( "P3M7D" ) ;
LocalDate later = ld.plus( p ) ;

对于类似于SQL标准TIMESTAMP WITHOUT TIME ZONE的数据库类型,请以LocalDateTime的身份进行检索。与时区一起跳过上面的部分。直接转到提取LocalDate。继续进行加/减。

myResultSet.getObject( … , LocalDateTime.class )
.toLocalDate()
.plusDays( 1 ) 
.toString()  

要生成表示标准ISO 8601格式的日期值的字符串,请调用LocalDate::toString()。对于其他格式,请使用DateTimeFormatter。搜索堆栈溢出以了解更多信息。