我有一個LocalDate
,我試圖將其轉換爲java.sql.Date
以將其存儲在數據庫的日期字段中。我的問題是,當我將它轉換爲java.sql.Date
時,由於我在EST中運行的機器,它已經落後了一天。我將Joda.DateTime
設置爲UTC,並通過使用millis構造函數創建java.sql.Date
。我包括調試的輸出手錶,所以你可以看到不同的值是:什麼是從LocalDate到java.sql.Date的正確途徑
item.getDate().toDateTimeAtStartOfDay() = {[email protected]}"2013-09-25T00:00:00.000Z"
item.getDate().toDateTimeAtStartOfDay().getMillis() = 1380067200000
new java.sql.Date(item.getDate().toDateTimeAtStartOfDay().getMillis()) = {[email protected]}"2013-09-24"
item.getDate().getLocalMillis() = 1380067200000
new java.sql.Date(item.getDate().getLocalMillis()) = {[email protected]}"2013-09-24"
new java.util.Date(item.getDate().getLocalMillis()) = {[email protected]}"Tue Sep 24 20:00:00 EDT 2013"
從java.util.Date
創建我猜想那是因爲我的機器我測試的是EST,和LocalDate使用UTC,但我不確定正確的解決方法是什麼。我意識到我可以得到當地的時區,並將其添加到millis,但這似乎是一個hacky修復程序。有沒有適當的方法來做到這一點,我只是想念?
與米利斯更新爲java.util.Date
new java.util.Date(item.getDate().getLocalMillis()).getTime() = 1380153600000
item.getDate().toDateTimeAtStartOfDay().getMillis() = 1380153600000
item.getDate() = {[email protected]}"2013-09-26"
new java.sql.Date(item.getDate().getLocalMillis()).getTime() = 1380153600000
new java.util.Date(item.getDate().getLocalMillis()) = {[email protected]}"Wed Sep 25 20:00:00 EDT 2013"
new java.util.Date(item.getDate().getLocalMillis()).getTime() = 1380153600000
什麼是SQL的毫秒值和UTIL'Date'對象? –