提交 eac56ea4 编写于 作者: C coffeys

8212941: Support new Japanese era in java.time.chrono.JapaneseEra

Reviewed-by: chegar, naoto, coffeys
Contributed-by: deepak.kejriwal@oracle.com
上级 df55cc64
/* /*
* Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -87,10 +87,33 @@ import sun.util.calendar.CalendarDate; ...@@ -87,10 +87,33 @@ import sun.util.calendar.CalendarDate;
/** /**
* An era in the Japanese Imperial calendar system. * An era in the Japanese Imperial calendar system.
* <p> * <p>
* This class defines the valid eras for the Japanese chronology. * The Japanese government defines the official name and start date of
* Japan introduced the Gregorian calendar starting with Meiji 6. * each era. Eras are consecutive and their date ranges do not overlap,
* Only Meiji and later eras are supported; * so the end date of one era is always the day before the start date
* dates before Meiji 6, January 1 are not supported. * of the next era.
* <p>
* The Java SE Platform supports all eras defined by the Japanese government,
* beginning with the Meiji era. Each era is identified in the Platform by an
* integer value and a name. The {@link #of(int)} and {@link #valueOf(String)}
* methods may be used to obtain a singleton instance of JapaneseEra for each
* era. The {@link #values()} method returns the singleton instances of all
* supported eras.
* <p>
* For convenience, this class declares a number of public static final fields
* that refer to singleton instances returned by the values() method.
*
* @apiNote
* The fields declared in this class may evolve over time, in line with the
* results of the {@link #values()} method. However, there is not necessarily
* a 1:1 correspondence between the fields and the singleton instances.
*
* @apiNote
* The Japanese government may announce a new era and define its start
* date but not its official name. In this scenario, the singleton instance
* that represents the new era may return a name that is not stable until
* the official name is defined. Developers should exercise caution when
* relying on the name returned by any singleton instance that does not
* correspond to a public static final field.
* *
* @implSpec * @implSpec
* This class is immutable and thread-safe. * This class is immutable and thread-safe.
...@@ -122,7 +145,7 @@ public final class JapaneseEra ...@@ -122,7 +145,7 @@ public final class JapaneseEra
*/ */
public static final JapaneseEra SHOWA = new JapaneseEra(1, LocalDate.of(1926, 12, 25)); public static final JapaneseEra SHOWA = new JapaneseEra(1, LocalDate.of(1926, 12, 25));
/** /**
* The singleton instance for the 'Heisei' era (1989-01-08 - current) * The singleton instance for the 'Heisei' era (1989-01-08 - 2019-04-30)
* which has the value 2. * which has the value 2.
*/ */
public static final JapaneseEra HEISEI = new JapaneseEra(2, LocalDate.of(1989, 1, 8)); public static final JapaneseEra HEISEI = new JapaneseEra(2, LocalDate.of(1989, 1, 8));
...@@ -187,10 +210,18 @@ public final class JapaneseEra ...@@ -187,10 +210,18 @@ public final class JapaneseEra
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
/** /**
* Obtains an instance of {@code JapaneseEra} from an {@code int} value. * Obtains an instance of {@code JapaneseEra} from an {@code int} value.
* <ul>
* <li>The value {@code 1} is associated with the 'Showa' era, because
* it contains 1970-01-01 (ISO calendar system).</li>
* <li>The values {@code -1} and {@code 0} are associated with two earlier
* eras, Meiji and Taisho, respectively.</li>
* <li>A value greater than {@code 1} is associated with a later era,
* beginning with Heisei ({@code 2}).</li>
* </ul>
* <p> * <p>
* The {@link #SHOWA} era that contains 1970-01-01 (ISO calendar system) has the value 1 * Every instance of {@code JapaneseEra} that is returned from the {@link values()}
* Later era is numbered 2 ({@link #HEISEI}). Earlier eras are numbered 0 ({@link #TAISHO}), * method has an int value (available via {@link Era#getValue()} which is
* -1 ({@link #MEIJI}), only Meiji and later eras are supported. * accepted by this method.
* *
* @param japaneseEra the era to represent * @param japaneseEra the era to represent
* @return the {@code JapaneseEra} singleton, not null * @return the {@code JapaneseEra} singleton, not null
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册