On Wed, 27 Jul 2022 20:18:16 GMT, Gaurav Chaudhari <d...@openjdk.org> wrote:

>> This is a REDO of the Fix that was incompletely implemented earlier:
>> [8285838: Fix for TZ environment variable DST 
>> rules](https://github.com/openjdk/jdk/pull/8660)
>> 
>> Offset calculation now accounts all the way upto year in order to avoid 
>> cross-day miscalculations as well as to calculate always in the correct 
>> direction for offset. In situations where there may be multiple days, the 
>> excess days of offset will be shaved off by applying mod to 
>> `seconds_per_day` , which will remove the excessive days that might be 
>> included in the offset calculation for special scenarios like a leap year / 
>> February months and variances between 30 and 31 days.
>> 
>> I have tested this solution with the cases where this fix had failed last 
>> time as well, and confirmed it works:
>> _(where 7200 represents 7200 seconds -> +2 hour offset)_
>> Sample output:
>> ![image](https://user-images.githubusercontent.com/6877595/176259828-07e27901-4a3f-4949-bd8d-2f88c979685a.png)
>
> Gaurav Chaudhari has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   8288377: Added GMT0 corner case and minor format fixes.

Thanks. Looks good with one minor request.

src/java.base/unix/native/libjava/TimeZone_md.c line 587:

> 585: 
> 586:     strftime(offset, 6, "%z", &localtm);
> 587:     if (strlen(offset) != 5) {

What I meant was the return value from `strftime`, not the length from 
`strlen`, ie, `if (strftime(...) != 5)`. It should be more robust.

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

Changes requested by naoto (Reviewer).

PR: https://git.openjdk.org/jdk/pull/9312

Reply via email to