ZoneRules.of() implies that transitionList is a superset of standardOffsetTransitionList but doesn't check that

Roman Leventov leventov.ru at gmail.com
Thu Jan 30 05:56:35 UTC 2020


1) ZoneRules.of() implies that transitionList is a superset of
standardOffsetTransitionList but doesn't check that. Then it's possible to
construct ZoneRules instances that don't work correctly:
    @Test
    public void zoneRulesTest() {
        LocalDateTime transitionDay = LocalDateTime.of(2020, 1, 1, 2, 0);
        ZoneOffsetTransition trans = ZoneOffsetTransition.of(
                transitionDay,
                ZoneOffset.ofHours(1),
                ZoneOffset.ofHours(2)
        );
        ZoneRules rules = ZoneRules.of(ZoneOffset.ofHours(1),
ZoneOffset.ofHours(1),
                Arrays.asList(trans),
                Collections.emptyList(), Collections.emptyList());

        Assert.assertEquals(ZoneOffset.ofHours(2), rules.getOffset(
                transitionDay.plusDays(7).toInstant(ZoneOffset.UTC)));
    }

2) Unrelated issue in java-time code: in ZoneOffsetTransitionRule, there is
a typo, some variables are called "timeDefnition" (missed "i") and it leaks
to public Javadoc.


More information about the core-libs-dev mailing list