巴西圣保罗标准时间 UTC -3
北京时间 UTC + 8
两者相差11小时,即北京时间比巴西快11小时,例如:北京时间15:00:00, 巴西应该为 04:00:00
但是!!,本地验证巴西时间05:00:00,那么少了一个小时去哪里了呢?
捣鼓了很多配置,无效,同事代码跑的就是04:00:00,相同的代码不同的结果,为何呢?
环境问题:系统时间时区 or idea配置 or jdk版本??
最后定位了是jdk版本问题,请检查本地版本是否为1.8,我将他升级至17版本,结果是ok的。
上代码
LocalDateTime now = LocalDateTime.now(); System.out.println("当前时间: " + now); LocalDateTime localDateTime = now.atZone(ZoneId.systemDefault()).withZoneSameInstant(ZoneId.of("America/Sao_Paulo")).toLocalDateTime(); System.out.println("当前巴西圣保罗时间: " + localDateTime);
如果你的版本1.8,那么建议你换几个高版本的1.8,多试一下,也许你当前版本jdk考虑了你的夏令时计算逻辑.
如何切换项目jdk版本:参考
https://blog.csdn.net/m0_55051386/article/details/134078424