【发布时间】:2017-11-01 20:44:09
【问题描述】:
我有一个LocalDate,我正在尝试将其转换为java.sql.Date,以将其存储在数据库的日期字段中。我的问题是,当我将其转换为java.sql.Date 时,由于我在 EST 中运行的机器,它落后了一天。我将Joda.DateTime 设置为UTC,并通过使用millis 构造函数创建java.sql.Date。我将调试手表的输出包括在内,这样您就可以看到不同的值是什么:
item.getDate().toDateTimeAtStartOfDay() = {org.joda.time.DateTime@6079}"2013-09-25T00:00:00.000Z"
item.getDate().toDateTimeAtStartOfDay().getMillis() = 1380067200000
new java.sql.Date(item.getDate().toDateTimeAtStartOfDay().getMillis()) = {java.sql.Date@6082}"2013-09-24"
item.getDate().getLocalMillis() = 1380067200000
new java.sql.Date(item.getDate().getLocalMillis()) = {java.sql.Date@6083}"2013-09-24"
new java.util.Date(item.getDate().getLocalMillis()) = {java.util.Date@6103}"Tue Sep 24 20:00:00 EDT 2013"
从java.util.Date 创建我假设这是因为我正在测试的机器在 EST 中,并且 LocalDate 在 UTC 中,但我不确定解决这个问题的正确方法是什么。我意识到我可以获取本地时区并将其添加到毫秒,但这似乎是一个 hacky 修复。有没有我只是想念的正确方法来做到这一点?
更新 java.util.Date 的毫秒
new java.util.Date(item.getDate().getLocalMillis()).getTime() = 1380153600000
item.getDate().toDateTimeAtStartOfDay().getMillis() = 1380153600000
item.getDate() = {org.joda.time.LocalDate@5812}"2013-09-26"
new java.sql.Date(item.getDate().getLocalMillis()).getTime() = 1380153600000
new java.util.Date(item.getDate().getLocalMillis()) = {java.util.Date@5842}"Wed Sep 25 20:00:00 EDT 2013"
new java.util.Date(item.getDate().getLocalMillis()).getTime() = 1380153600000
【问题讨论】:
-
sql 和 util
Date对象的毫秒值是多少?