<i18n dev> RFR: 8247781: Day periods support [v13]

Stephen Colebourne scolebourne at openjdk.java.net
Thu Nov 12 22:01:01 UTC 2020


On Thu, 12 Nov 2020 20:03:14 GMT, Naoto Sato <naoto at openjdk.org> wrote:

>> Hi,
>> 
>> Please review the changes for the subject issue. This is to enhance the java.time package to support day periods, such as "in the morning", defined in CLDR. It will add a new pattern character 'B' and its supporting builder method. The motivation and its spec are in this CSR:
>> 
>> https://bugs.openjdk.java.net/browse/JDK-8254629
>> 
>> Naoto
>
> Naoto Sato has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Addressed the following comments:
>   - https://github.com/openjdk/jdk/pull/938#discussion_r522185469
>   - https://github.com/openjdk/jdk/pull/938#discussion_r522187931
>   - https://github.com/openjdk/jdk/pull/938#discussion_r522203757
>   - https://github.com/openjdk/jdk/pull/938#discussion_r522211444
>   - https://github.com/openjdk/jdk/pull/938#discussion_r522244221
>   - https://github.com/openjdk/jdk/pull/938#discussion_r522262379
>   - https://github.com/openjdk/jdk/pull/938#discussion_r522266836

Approved with one overflow to fix.

The spec could do with some rewording too. It might be better to explicitly mention the "resolving phase" with the three parts:

> The day period is combined with other fields to make a `LocalTime` in the resolving phase. If the `HOUR_OF_AMPM` field is present, it is combined with the day period to make `HOUR_OF_DAY` taking into account any `MINUTE_OF_HOUR` value. If `HOUR_OF_DAY` is present, it is validated against the day period taking into account any `MINUTE_OF_HOUR` value. If a day period is present without `HOUR_OF_DAY`, `MINUTE_OF_HOUR`, `SECOND_OF_MINUTE` and `NANO_OF_SECOND` then the midpoint of the day period is set as the time.

Note that the above is incomplete, and it doesn't describe STRICT/LENIENT, so the actual words will be more complex,

src/java.base/share/classes/java/time/format/DateTimeFormatterBuilder.java line 5063:

> 5061:             }
> 5062:             Long moh = context.getValue(MINUTE_OF_HOUR);
> 5063:             long value = (hod * 60 + (moh != null ? moh : 0)) % 1_440;

`long value = Math.floorMod(hod, 24) * 60 + (moh != null ? Math.floorMod(moh, 60) : 0);`

and remove the next three lines

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

Marked as reviewed by scolebourne (Author).

PR: https://git.openjdk.java.net/jdk/pull/938


More information about the i18n-dev mailing list