从数据库检索到的日期值使用java.util.Date显示前一天的值



我的代码中出现了这种奇怪的现象。我使用的是spring数据jpa和MySQL数据库。我有一个名为"Submission"的表,它的日期字段名为"finishedAt"。该字段的数据类型为:"Date"。

我有一个Java中的映射类:

@Entity
@Table(name = "Submission")
@Getter
@Setter
public class Submission{
//All the fields here
@Temporal(javax.persistence.TemporalType.DATE)
java.util.Date finishedAtValue 
}

有一种方法试图访问此日期值。当我打印日期时,我会看到前一天的值。

示例:

假设数据库中的日期值为2020-06-05(yyyy-mm-dd(

该方法中的代码片段如下:

//Code to get the entity from database successfully - submission
log.info("DateTimeAnswer retrieved from database: "+submission.getFinishedAtValue);
/*Expected date value from above log: 2020-06-05
Actual date value from above log: 2020-06-04*/

无法理解提取此日期值时出现这种不一致的原因。如有任何帮助,我们将不胜感激。谢谢


java.util.Date类getter方法返回当天的索引。这是Date类行为。

问题似乎或多或少与TimeZone的差异有关。

请尝试下面类似问题的答案。

类似问题:类似问题

在存储和检索日期之前检查日期的时间部分。我猜这是由于8.0.20之前的MySQL驱动程序中的一个错误造成的。如果日期2020-06-05被视为午夜+03:00,然后转换为-06:00,则为6月4日下午6点,山地夏令时。

相关内容

  • 没有找到相关文章

最新更新