[英]Different values when converting Instant to LocalDateTime
我從服務器收到 UTC 格式的時間。 我解析為Instant
object ,然后將其轉換為LocalDateTime
。 像這樣:
fun String.toLocaleDateTime(): LocalDateTime {
return LocalDateTime.ofInstant(
Instant.parse(this),
ZoneOffset.systemDefault()
)
}
問題是不同年份的LocalDateTime
object 是不同的。
例如,將 UTC 時間轉換為 IST 時間時:
1800-01-01T03:36:32Z -> 1800-01-01T09:30
1870-01-01T03:36:32Z -> 1870-01-01T08:57:42
1906-01-01T03:36:32Z -> 1906-01-01T09:06:32
讓我們來看看印度從 1700 年到 2000 年的所有偏移量變化:
ZoneId.of("Asia/Kolkata").rules.transitions.filter {
(1700..2000).contains(it.dateTimeBefore.year)
}.forEach {
println("On ${it.dateTimeBefore}, jumped from ${it.offsetBefore} to ${it.offsetAfter}")
}
這將獲得您機器上 tzdb 版本的時區數據。 在我的機器上,打印:
On 1854-06-28T00:00, jumped from +05:53:28 to +05:53:20
On 1870-01-01T00:00, jumped from +05:53:20 to +05:21:10
On 1906-01-01T00:00, jumped from +05:21:10 to +05:30
On 1941-10-01T00:00, jumped from +05:30 to +06:30
On 1942-05-15T00:00, jumped from +06:30 to +05:30
On 1942-09-01T00:00, jumped from +05:30 to +06:30
On 1945-10-15T00:00, jumped from +06:30 to +05:30
似乎直到 1906 年,印度才使用當地標准時間。
您的每個結果都反映了這些偏移量:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.