Skip to content

Commit 7c08082

Browse files
committed
ZoneRulesBasedTimeZone should use offset after (not before) a transition.
1 parent 6660109 commit 7c08082

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/runtime/util/ZoneRulesBasedTimeZone.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import java.time.ZoneOffset;
5151
import java.time.zone.ZoneRules;
5252
import java.util.Date;
53+
import java.util.List;
5354

5455
/**
5556
* Implementation of ICU4J {@code TimeZone} that takes time-zone data from the provided
@@ -70,7 +71,14 @@ public int getOffset(int era, int year, int month, int day, int dayOfWeek, int m
7071
LocalDate date = LocalDate.of((era == GregorianCalendar.BC) ? -year : year, month + 1, day);
7172
LocalTime time = LocalTime.ofNanoOfDay(1000000L * milliseconds);
7273
LocalDateTime dateTime = LocalDateTime.of(date, time);
73-
return toMillis(rules.getOffset(dateTime));
74+
List<ZoneOffset> offsets = rules.getValidOffsets(dateTime);
75+
ZoneOffset offset;
76+
if (offsets.size() == 1) {
77+
offset = offsets.get(0);
78+
} else {
79+
offset = rules.getTransition(dateTime).getOffsetAfter();
80+
}
81+
return toMillis(offset);
7482
}
7583

7684
@Override

0 commit comments

Comments
 (0)