在SO(ex1、ex2、ex3)中有一些相关的帖子,但都没有解决这个问题。
我有一个具有以下localdate
的实体:
@Column(nullable=true)
private LocalDate birthDate;
我也有这个存储库:
@RepositoryRestResource(collectionResourceRel = "person", path = "person")
public interface PersonRepository extends PagingAndSortingRepository<Person, Long>{
}
当我在数据库中保存birthdate
时(我使用的是MySQL),它会正确保存。然而,当我进行这个查询时,例如:
Person p = personRepo.findById(1L).get();
日期的提取延迟了一天(就像上面的例子一样)。我试图实现这个建议,即将LocalDate更改为Date,并包含Jackson注释,但这并不奏效。我还尝试包含jackson-modules-java8
,但问题仍然存在。
+--------------------+---------------------+--------------------+
| @@GLOBAL.time_zone | @@session.time_zone | @@system_time_zone |
+--------------------+---------------------+--------------------+
| SYSTEM | SYSTEM | -02 |
+--------------------+---------------------+--------------------+
1 row in set (0,00 sec)
终于,我找到了解决办法。在@Ilyacyclone和@Olev.v之后。注释,我开始搜索时区、spring boot和localdate
。确实,localdate
并不携带UTC信息。但是,当我从数据库中提取这些数据时,JVM需要进行转换,使SQLdate
变成localdate
。
因此,我做的第一件事就是检查数据库时区:
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP) as GMT_TIME_DIFF;
它返回:
+--------------------+---------------------+--------------------+
| @@GLOBAL.time_zone | @@session.time_zone | @@system_time_zone |
+--------------------+---------------------+--------------------+
| SYSTEM | SYSTEM | -02 |
+--------------------+---------------------+--------------------+
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP)
返回:
+--------------------------------+
| TIMEDIFF(NOW(), UTC_TIMESTAMP) |
+--------------------------------+
| -02:00:00 |
+--------------------------------+
所有这些SQL答案都是OK的。问题出在弹簧靴上。解决问题的方法是在代码中设置UTC。我在这里找到了这个提示。
@PostConstruct
void started() {
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}
之后,所有的日期开始正常工作。
问题内容: 我试图列出使用SQL Server在表中注册的日期,但是我的问题是我提取的所有日期与表中的日期相差2天。 例如,我在数据库中得到了2012-12-25,当我检索它并将其转换为Java.util.Date时,它变成了2012-12-23 … 我在另一个表中的日期上有工作正常的进程。 我正在使用SQL Server 2008,Hibernate 3和Spring 3。 编辑: 该表的列数据
我有日期输入为“20170101”(YYYYMMDD),我只需编写freemarker模板将上述日期转换或格式化为“2017-01-01 00:00:00”(YYYY-MM-DD HH:MM:SS)作为日期-时间以上格式。 但它返回错误为“字符串与预期的日期/时间/日期-时间格式不匹配。要分析的字符串是:”20170101“。预期的格式是:”MMM dd yyyy HH:MM:SS“。给出的嵌套原
我正在构建一个react应用程序,使用MongoDb和express后端作为数据库。我的一个模型具有属性日期,类型为date。 然后,在我的反应应用程序上,我有一个表单,我在其中输入所有这些信息。但是如果我把一个日期,比如01/11/2017,保存的日期是31/10/2017。据我所知,这是因为MongoDd以UTC格式存储日期。有没有办法改变这种行为?因为同样,当我尝试按日期搜索时,这个问题也给
例如:字符串日期:Wed Jan 15 14:29:00 2020,DB:2020-01-16 05:50:40.000000+0000 有时,我还会遇到这样的错误:DateOverflowWarning:有些时间戳比Python datetime所能表示的要大。时间戳从纪元开始以毫秒为单位显示。
我无法确定日期。据我所见,它只设定了正确的日期,而不是月份和年份。我不明白我做错了什么。 这是我的密码: 格式化ate.js 和组件: 我使用的npm反应下拉日期,并遵循从他们的留档的例子。也许我用错了useState或Use效应钩子?也许有人与React和日期的经验可以帮助我解决这个问题。
问题内容: 在我的应用程序中,我通过使用SharedPreferences将其作为长字符串写出到文件中来保留CookieStore。重新读回此String时,我使用regexps从String解析每个cookie及其属性(名称,值,域,路径,版本,到期日期)。解析这些属性时,我通过为每个解析的cookie创建一个新的BasicClientCookie对象来重建一个CookieStore,然后将每个