我正在使用Java 8,Maven和Spring的应用程序中工作。自2019年以来,巴西废除了夏令时。
基本上,我正在更改系统中的所有日期以保存在utc中,并在使用该应用程序的任何人的时区中显示。大多数用户来自巴西
为了解决时区问题,我将JRE和JDK更新为Java 8的最新版本,因此所有指示为夏令时的日期开始恢复为正常时间。这样我就可以转换日期,并且已经进行了大约两周的时间
问题是今天,在午餐时间,我一直在进行的所有转换都突然返回以指示夏令时,即使根本没有进行任何更新
示例:
calculatedList.forEach(dto -> {
LocalDateTime date = dto.getResultDate();
dto.setResultDate(date.atZone(ZoneId.of("UTC")).withZoneSameInstant(ZoneId.of("America/Sao_Paulo")).toLocalDateTime());
});
当我编写此代码时,我确保转换在utc中使用了一个日期并将其带到-3。现在,相同的方法将转换为-2
我已经编写了这样的代码已有2周了,到目前为止一切都已经按预期进行。这是一个非常模糊的问题,但是我无法想象我可能会做些什么来使时区出错。谁能帮助我了解发生了什么?
按照此页:https://www.oracle.com/technetwork/java/javase/tzdata-versions-138805.html
由于以下原因,巴西不再遵守DST:
而您的Java版本是1.8.0_221
,其中不包含该更改。