我正在嘗試將此日期字串“2021-12-10T00:00:00”轉換為日期,但是當我反序列化它時,我得到了這個。
2021 年 12 月 9 日星期四 19:00:00 COT。似乎我失去了一天。
誰能幫我?
"startDate": "2021-12-10T00:00:00", 結果是這樣的
2021-12-09T19:00:00.000-0500
uj5u.com熱心網友回復:
tl;博士
java.util.Date.from(
LocalDateTime
.parse( "2021-12-10T00:00:00" )
.atZone(
ZoneId.of( "America/Bogota" )
)
.toInstant()
)
細節
我猜您正在使用可怕的遺留日期時間類,例如Date和Calendar。別。僅使用java.time類。
您的輸入字串符合日期時間格式的 ISO 8601 標準。所述java.time類決議/生成字串時默認使用這些標準格式。所以不需要指定格式模式。
LocalDateTime ldt = LocalDateTime.parse( "2021-12-10T00:00:00" ) ;
你說:
我正在嘗試將此日期字串“2021-12-10T00:00:00”轉換為日期
那沒有意義。
我假設“日期”是指java.until.Date. 該遺留類代表一個時刻,即時間軸上的一個點,如 UTC 中所見,即與 UTC 的零時-分-秒偏移量。
但是您的輸入缺少時區或偏移量的指標。例如,如果該字串表示 UTC 中的一個時刻,則應該Z附加一個。
我猜你認為輸入是為了代表在哥倫比亞看到的一個時刻。
ZoneId z = ZoneId.of( "America/Bogota" ) ;
ZonedDateTime zdt = ldt.atZone( z ) ;
現在我們通過哥倫比亞人民使用的掛鐘時間確定了一個時刻。
一般最好避免java.util.Date上課。但如果必須,為了與尚未更新為java.time 的遺留代碼進行互操作,您可以進行轉換。
java.util.Date d = Date.from( zdt.toInstant() ) ;
uj5u.com熱心網友回復:
你的開始日期是2021-12-10 00:00:00 GMT 0,你的結果是2021-12-09 19:00:00 GMT-5。這些時間是一樣的。您可以將Locale傳遞給SimpleDataFormat 建構式,以便能夠配置使用的時區。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/374141.html
