首页 > 解决方案 > 我们如何在java中增加或减少日期(JUST DATE)

问题描述

我想以 mySQL 格式显示完整的日期,但不想同时看到时间。

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

标签: java

解决方案


tl;博士

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

细节

对于类似于 SQL-standard 类型的列TIMESTAMP WITH TIME ZONE,检索为Instant.

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

AnInstant始终采用 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 ) ;

或者……</p>

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

对于类似于 SQL-standard 的数据库类型TIMESTAMP WITHOUT TIME ZONE,检索为LocalDateTime. 跳过上面带有时区的部分。直接去解压LocalDate。继续你的加法/减法。

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

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


推荐阅读