Java时区问题:LocalDate获取萨摩亚日期显示异常
问题原因及修复方案
- 问题出在你用的时区ID
Pacific/Samoa是萨摩亚2011年时区变更前的旧标识,对应的是UTC-11时区,而非当前萨摩亚实际使用的UTC+13时区。 - 萨摩亚在2011年12月29日调整时区,从UTC-11跳转为UTC+13(无夏令时),目的是和澳新地区时区对齐,之后官方标准时区ID改为
Pacific/Apia。 - 对应你给出的时间计算:伦敦时间2023-07-26 16:47(UTC+1),换算成UTC是15:47。用旧时区
Pacific/Samoa(UTC-11)计算,15:47减去11小时是当天4:47,日期自然是26日;而实际萨摩亚时区(UTC+13)是15:47加13小时,得到次日4:47,日期为27日。 - 修复后的代码:
LocalDate localDate = LocalDate.now(ZoneId.of("Pacific/Apia"));
内容的提问来源于stack exchange,提问作者Joao Pedro
相关产品推荐
相关产品推荐

