亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 XMLGregorianCalendar 轉換為 LocalDateTime 時出現奇怪的結果

將 XMLGregorianCalendar 轉換為 LocalDateTime 時出現奇怪的結果

江戶川亂折騰 2023-07-13 13:48:52
我正在嘗試將 XMLGregorianCalendarObject 轉換為 LocalDateTime,但得到了不尋常的結果。我在這里做了一些可能是錯誤的假設:1) xmlDate 參數是 UTC2)返回值為PSTprivate LocalDateTime convertDate(XMLGregorianCalendar xmlDate) {? ?GregorianCalendar gc = xmlDate.toGregorianCalendar();? ?ZonedDateTime zdt = gc.toZonedDateTime();? ?LocalDateTime localDate = zdt.withZoneSameInstant(ZoneId.of("America/Los_Angeles")).toLocalDateTime();? ?return localDate;? ?}輸出與輸入完全相同:XMLGregorianCalendar xmlDate: "2019-09-03T13:22:38.436-07:00"LocalDateTime localDate: "2019-09-03T13:22:38"另外,這不起作用(相同的方法,不同的語法):private LocalDateTime convertDate(XMLGregorianCalendar xmlDate) {? ? ZonedDateTime utcZoned = xmlDate.toGregorianCalendar().toZonedDateTime().withZoneSameInstant(ZoneId.of("America/Los_Angeles"));? ? LocalDateTime localDate = utcZoned.toLocalDateTime();? ? return localDate;}結果與第一個代碼片段相同。我認為我的問題出在 withZoneSameInstant() 方法中的某個地方。奇怪的是,當我將不同的時區代碼輸入參數時,確實發生了轉換。嘗試使用“太平洋/奧克蘭”。我究竟做錯了什么?
查看完整描述

1 回答

?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

你的第一個假設是錯誤的:

1) xmlDate 參數是 UTC

末尾-07:002019-09-03T13:22:38.436-07:00是與 UTC 的偏移量。該偏移量與 America/Los_Angeles 時區(太平洋夏令時間)一致。Java 認識到這一點,因此當您轉換為 America/Los_Angeles 時,它不會改變時間。當您轉換為太平洋/奧克蘭時,就會出現這種情況。

我相信你的代碼是正確的。


查看完整回答
反對 回復 2023-07-13
  • 1 回答
  • 0 關注
  • 253 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號