Java UTC时间将自动添加到my date变量中

Java UTC时间将自动添加到my date变量中,java,spring,hibernate,Java,Spring,Hibernate,这是我的json格式: "date": "2020-01-01T00:00:00.000Z" 然而,在爪哇,我收到的日期是2020年1月1日星期三05:30:00 以下是我的DTO代码 public class DateTimeDto { @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXX") private Date date; } 我使用dateTimeDto.getDate来接收以JSON格式发送的日期 我如何只获取

这是我的json格式:

"date": "2020-01-01T00:00:00.000Z"
然而,在爪哇,我收到的日期是2020年1月1日星期三05:30:00

以下是我的DTO代码

public class DateTimeDto {

    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXX")
    private Date date;

}
我使用dateTimeDto.getDate来接收以JSON格式发送的日期

我如何只获取日期而不添加UTC

接收以JSON格式发送的日期

日期时间值没有JSON格式

这是我的json格式:

"date": "2020-01-01T00:00:00.000Z"
日期:2020-01-01T00:00:00.000Z

末尾的Z表示该日期和时间被视为UTC,偏移量为0小时分秒。此文本的格式在中定义

解析一个。永远不要使用日期。仅使用java.time类

由于采用标准格式,因此无需指定格式模式

Instant instant = Instant.parse( "2020-01-01T00:00:00.000Z" ) ;
所以,看那个时刻被调整到另一个时区,应用一个ZoneId

知道日期时间对象没有“格式”。您可以生成/解析各种格式的字符串,但日期时间对象是独立的

只知道日期

如果您指的是没有时间的日期部分,则可以在调整到要解释日期的时区后提取LocalDate。请记住,在任何给定的时刻,全球各地的日期都因区域而异

Instant
.parse( "2020-01-01T00:00:00.000Z" )
.atZone( ZoneId.of( "America/Montreal" ) )
.toLocalDate()
没有添加UTC

没有添加UTC。原始值表示UTC中的某个时刻。我们知道,因为Z表示UTC,发音为“Zulu”

我发送了JSON调试5436-[nio-8080-exec-2]org.hibernate.SQL:从dbo.table_name中选择count*date='Wed Jan 01 05:30:00 IST 2020'

在查询中使用智能对象而不仅仅是字符串作为参数。Hibernate和JDBC4.2允许您与数据库交换java.time对象

“2020年1月1日星期三05:30:00”

永远不要使用这种糟糕的格式来通过文本交换日期时间值。该格式假设为英语,很难用机器解析,使用2-4个字符的伪时区,如IST,它不是标准的,也不是唯一的爱尔兰标准时间?印度标准时间


有关详细信息,请搜索堆栈溢出。所有这些都已经被讨论过很多次了。发帖前进行搜索和研究。

您所说的我收到的java是什么意思。。。?您是在调试器中看到此值,还是将日期打印到std out?SimpleDataFormat不符合ISO-8601。在ISO-8601中,“Z”可以降级时区,这是有问题的。请阅读此主题:发送json中的2020-01-01T00:00:00.000+05:30如何…因为UTC->IST的翻译是正确的!使用java.time而不是java.util。。。