gpt4 book ai didi

java - 将 XMLGregorianCalendar 转换为 LocalDateTime 时出现奇怪的结果

转载 作者:行者123 更新时间:2023-11-30 07:40:24 25 4
gpt4 key购买 nike

我正在尝试将 XMLGregorianCalendarObject 转换为 LocalDateTime,但我得到了异常的结果。 我已经尝试过this post中的解决方案和 this post .

我在这里做了一些可能是错误的假设:

1) xmlDate 参数是 UTC

2)返回值为PST

private LocalDateTime convertDate(XMLGregorianCalendar xmlDate) {

GregorianCalendar gc = xmlDate.toGregorianCalendar();
ZonedDateTime zdt = gc.toZonedDateTime();
LocalDateTime localDate = zdt.withZoneSameInstant(ZoneId.of("America/Los_Angeles")).toLocalDateTime();

return localDate;
}

输出与输入完全相同:

XML公历 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) the xmlDate argument is UTC

2019-09-03T13:22:38.436-07:00 末尾的 -07:00 是与 UTC 的偏移量。偏移量与 America/Los_Angeles 时区(太平洋夏令时)一致。 Java 识别这一点,所以当您转换为 America/Los_Angeles 时,它不会更改时间。当您改为转换为太平洋/奥克兰时,它确实如此。

我相信你的代码是正确的。

关于java - 将 XMLGregorianCalendar 转换为 LocalDateTime 时出现奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57814471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com