On Wed, 7 Oct 2026 23:06:32 GMT, Naoto Sato <[email protected]> wrote:

>> Justin Lu has updated the pull request incrementally with one additional 
>> commit since the last revision:
>> 
>>   Expand explicit dstOffset support during transition periods
>
> src/java.base/share/classes/java/text/SimpleDateFormat.java line 1844:
> 
>> 1842:                 if (!(useSameName || (nameIndex >= 3 && dstAmount == 
>> 0))) {
>> 1843:                     
>> calb.clear(Calendar.ZONE_OFFSET).set(Calendar.DST_OFFSET, dstAmount);
>> 1844:                 }
> 
> I think we still need to adjust the offset even if `explicitDstOffset` is in 
> effect. Otherwise, round-tripping would fail for instants at the dst/std (or 
> vice versa) transition period, e.g., `2026-10-25T01:30:00` (Dublin local time)

That's a good point. Pushed 
https://github.com/openjdk/jdk/pull/33235/commits/6b8ff0c32efd8cfa9b9f19edfc4d1a2a69e4862b.

>From what I can tell, there isn't a way for us to accurately decide what to do 
>during `PATTERN_ZONE_NAME` processing, so we have to handle such cases later.

Once the final date is resolved, if it is during a transition period, we can 
use the matched name as the tiebreaker to decide the correct offset. This added 
overhead should only apply to an explicit `dstOffset` zone, which the vast 
majority of cases are not. I opted to use an `int[] matchedName` array to carry 
the matched name back out, similar to what is done with `boolean[] 
ambiguousYear`.

I think some trickiness is making sure that the behavior lines up with standard 
non explicit `dstOffset` parsing. i.e. in terms of identical names, subsequent 
'z/x' time zone patterns, centuries. 

It is unfortunate that this regression is quite specific, (explicit `dstOffset` 
plus historical zone mismatch) and probably does not carry its weight in terms 
of the code required for it, but it is a regression nonetheless.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/33235#discussion_r4235372415

Reply via email to