我的代码中出现了这种奇怪的现象。我使用的是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点,山地夏令时。