我想以mySQL格式显示完整的日期,但不想与它一起显示时间。
想要增加或减少执行操作的日期
答案 0 :(得分:0)
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
。搜索堆栈溢出以了解更多信息。