public static void main(String[] args) {
LocalDateTime ldt = LocalDateTime.now();
ZonedDateTime zdt = ZonedDateTime.of(ldt, ZoneId.systemDefault());
Instant instant = Instant.from(zdt);
Timestamp timestamp = Timestamp.from(instant);
System.out.println(ldt + "\n");
System.out.println(zdt + "\n");
System.out.println(instant + "\n");
System.out.println(timestamp + "\n");
}
而且它打印:如何製作java.sql.Timestamp UTC時間?
2017-05-07T18:13:26.969
2017-05-07T18:13:26.969-04:00[America/New_York]
2017-05-07T22:13:26.969Z
2017-05-07 18:13:26.969
我怎樣才能使一個SQL Timestamp
保存與同時爲Instant
?我需要能夠從任何地方獲得Timestamp
,並將其轉換爲任何時間碰巧在世界的那個地方。問題是,無論我的系統時鐘發生什麼情況,它都會一直保存。
這有幫助。 「即時」完全是欺騙性的,因爲它會打印當前的UTC時間,但當轉換爲「時間戳」時,顯示當地時間。所以當它保存到遠程數據庫時,無論我在哪裏,它都會在哪裏。我得到一個'Timestamp'沒有時區,而'Instant'是一個時期的偏移量,但如果'Timestamp'記錄當前時間爲當地時間而不是當前UTC時間,那麼這是完全沒有用的。這是一個很難提出的問題,因爲每個人都自動假設我認爲它應該顯示一個時區。 – DayTripperID
這似乎也幫助我解決Timestamp本地時間轉換問題。我不知道這是否過度轉換,但是下面的鏈將存儲的UTC長度轉換爲UTC格式,並通過LDT而非Instant轉換爲時間戳:'Timestamp.valueOf( \t \t LocalDateTime。 ofEpochSecond(longEpochVal,0,ZoneOffset.UTC))' –