<i18n dev> Additional infomation for JDK-8048123

Mitsuru Matsushima m-matsushima at bk.jp.nec.com
Thu Jun 22 10:38:52 UTC 2017


Hi Sato-san,

Thank you for your response.

Sorry for teaching you the wrong issue number. 
(However, it seems you handled fine...)

 wrong: JDK-8048123
 correct: JDK-8180469

Mitsuru

> -----Original Message-----
> From: Naoto Sato [mailto:naoto.sato at oracle.com]
> Sent: Thursday, June 22, 2017 7:17 PM
> To: Matsushima Mitsuru(松島 充) <m-matsushima at bk.jp.nec.com>; i18n-dev at openjdk.java.net
> Subject: Re: <i18n dev> Additional infomation for JDK-8048123
> 
> Hi Matsushima-san,
> 
> Thank you for the further information on the issue. I attached your observation in the bug report. I will fix it along
> with the supplemental era's short name inconsistency.
> 
> Naoto
> 
> On 6/22/17 1:36 PM, Mitsuru Matsushima wrote:
> > At the Comparison table, I added the "Supplemental Era" behavior and "Expected?" behavior.
> > Japanese usually use '平' or 'H' for abbreviated name of "平成".
> > Thus, I think it's useful that the both of them are usable.
> > So I added the "Expected?" behavior.
> > (Ah, however it seems difficult that different behavior for short
> > form...) (I don't know why CLDR don't describe wide name for Japanese
> > era and why describe wide name as abbreviated name.)
> >
> > Comparison table:
> > =======================================
> >                    | SimpleDateFormat| DateTimeFormatter
> >                    |--------|--------|--------|--------|--------
> >                    | Full   | Short  | Full   | Short  | Narrow
> > ------------------|--------|--------|--------|--------|--------
> >   COMPAT           | 平成   | H      | 平成   | H      | H
> >   CLDR             | 平成   | 平成   | 平成   | 平成   | H
> >   HOST             | 平成   | 平     | 平成   | 平     | 平成
> > ------------------|--------|--------|--------|--------|--------
> >   Supplemental Era | NewEra | N.E    | NewEra | N.E    | N.E
> > ------------------|--------|--------|--------|--------|--------
> >   Expected?        | 平成   | H      | 平成   | 平     | H
> > =======================================
> >
> >
> > Test code:
> > Execute with java.locale.provider system property.
> > =======================================
> > public class SupplementalEraTest2 {
> >
> >      public static void main(String... args) {
> >          System.out.println("java.locale.providers="
> >                  + System.getProperty("java.locale.providers"));
> >          // set supplemental era
> >          System.setProperty(
> >                  "jdk.calendar.japanese.supplemental.era",
> >                  "name=NewEra,abbr=N.E,since=1546300800000");
> >
> >          final int[][] dateSrcs = {
> >              //{1989, 1, 7}, {1989, 1, 8}, // Heisei before and after
> >              {2018, 12, 31}, {2019, 1, 1}, // NewEra before and after
> >          };
> >
> >          System.out.println(">>>>> SimpleDateFormat");
> >          printWithSimpleDateFormat(dateSrcs);
> >
> >          System.out.println(">>>>> DateTimeFormatter");
> >          printWithDateTimeFormatter(dateSrcs);
> >      }
> >
> >      private static void printWithSimpleDateFormat(int[][] dateSrcs) {
> >          final Locale jpLocale = new Locale("ja", "JP", "JP");
> >          final Calendar cal = Calendar.getInstance();
> >          final Date[] dates = Arrays.stream(dateSrcs)
> >                  .map((int[] d) -> {  // first month is 0
> >                      cal.set(d[0], d[1] - 1, d[2], 0, 0, 0);
> >                      return cal.getTime();
> >                  }).toArray(Date[]::new);
> >          System.out.println("---Full format");
> >          SimpleDateFormat fmtLong = new SimpleDateFormat(
> >                  "GGGG", jpLocale);
> >          Arrays.stream(dates).map(fmtLong::format).forEach(System.out::println);
> >          System.out.println("---Short format");
> >          SimpleDateFormat fmtShort = new SimpleDateFormat(
> >                  "G", jpLocale);
> >          Arrays.stream(dates).map(fmtShort::format).forEach(System.out::println);
> >      }
> >
> >      private static void printWithDateTimeFormatter(int[][] dateSrcs) {
> >          final Locale jpLocale = new Locale("ja", "JP", "JP");
> >          final LocalDate[] lDates = Arrays.stream(dateSrcs)
> >                  .map((int[] d) -> LocalDate.of(d[0], d[1], d[2]))
> >                  .toArray(LocalDate[]::new);
> >          System.out.println("---Full format");
> >          final DateTimeFormatter fmtrFull = DateTimeFormatter.ofPattern("GGGG")
> >                  .withChronology(JapaneseChronology.INSTANCE).withLocale(jpLocale);
> >
> > Arrays.stream(lDates).map(fmtrFull::format).forEach(System.out::printl
> > n);
> >
> >          System.out.println("---Short format");
> >          DateTimeFormatter fmtrShort = DateTimeFormatter.ofPattern("G")
> >                  .withChronology(JapaneseChronology.INSTANCE).withLocale(jpLocale);
> >
> > Arrays.stream(lDates).map(fmtrShort::format).forEach(System.out::print
> > ln);
> >
> >          System.out.println("---Narrow format");
> >          DateTimeFormatter fmtrNarrow = DateTimeFormatter.ofPattern("GGGGG")
> >                  .withChronology(JapaneseChronology.INSTANCE).withLocale(jpLocale);
> >          Arrays.stream(lDates).map(fmtrNarrow::format).forEach(System.out::println);
> >      }
> > }
> > =======================================



More information about the i18n-dev mailing list