Skip to content

Commit 2a125a1

Browse files
authored
Merge pull request #176 from cquiroz/reiwa
Reiwa
2 parents 268777e + c9e48db commit 2a125a1

File tree

5 files changed

+51
-17
lines changed

5 files changed

+51
-17
lines changed

.github/workflows/scala.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ jobs:
88

99
steps:
1010
- uses: actions/checkout@v1
11-
- name: Set up JDK 1.8
11+
- name: Set up JDK 13
1212
uses: olafurpg/setup-scala@v2
1313
with:
14-
java-version: 1.8
14+
java-version: 13
1515
- name: Cache Coursier
1616
uses: actions/cache@v1
1717
with:

core/shared/src/main/scala/org/threeten/bp/chrono/JapaneseEra.scala

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,19 @@ object JapaneseEra {
7474
*/
7575
lazy val HEISEI: JapaneseEra = new JapaneseEra(2, LocalDate.of(1989, 1, 8), "Heisei")
7676

77+
/**
78+
* The singleton instance for the 'Reiwa' era (2019-05-01 - current)
79+
* which has the value 3.
80+
*/
81+
lazy val REIWA = new JapaneseEra(3, LocalDate.of(2019, 5, 1), "Reiwa")
82+
7783
/**
7884
* The value of the additional era.
7985
*/
80-
private[chrono] val ADDITIONAL_VALUE: Int = 3
86+
private[chrono] val ADDITIONAL_VALUE: Int = 4
8187

8288
private[chrono] lazy val KNOWN_ERAS: AtomicReference[Array[JapaneseEra]] = new AtomicReference(
83-
Array(MEIJI, TAISHO, SHOWA, HEISEI)
89+
Array(MEIJI, TAISHO, SHOWA, HEISEI, REIWA)
8490
)
8591

8692
/** Obtains an instance of {@code JapaneseEra} from an {@code int} value.

core/shared/src/main/scala/org/threeten/bp/chrono/internal/TTBPJapaneseEra.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,17 @@ object TTBPJapaneseEra {
2424
*/
2525
def registerEra(since: LocalDate, name: String): JapaneseEra = {
2626
val known = JapaneseEra.KNOWN_ERAS.get
27-
if (known.length > 4)
27+
if (known.length > 5)
2828
throw new DateTimeException("Only one additional Japanese era can be added")
2929
require(since != null)
3030
require(name != null)
31-
if (!since.isAfter(JapaneseEra.HEISEI.since))
31+
if (!since.isAfter(JapaneseEra.REIWA.since))
3232
throw new DateTimeException(
33-
"Invalid since date for additional Japanese era, must be after Heisei"
33+
"Invalid since date for additional Japanese era, must be after Reiwa"
3434
)
3535
val era = new JapaneseEra(JapaneseEra.ADDITIONAL_VALUE, since, name)
36-
val newArray = Arrays.copyOf(known, 5)
37-
newArray(4) = era
36+
val newArray = Arrays.copyOf(known, 6)
37+
newArray(5) = era
3838
if (!JapaneseEra.KNOWN_ERAS.compareAndSet(known, newArray))
3939
throw new DateTimeException("Only one additional Japanese era can be added")
4040
era

tests/shared/src/test/scala/org/threeten/bp/chrono/TestJapaneseChronology.scala

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -134,10 +134,13 @@ class TestJapaneseChronology extends AnyFunSuite with AssertionsHelper {
134134
}
135135

136136
val data_japansesEras: List[(Era, Int, String)] = {
137-
List((JapaneseEra.MEIJI, -1, "Meiji"),
138-
(JapaneseEra.TAISHO, 0, "Taisho"),
139-
(JapaneseEra.SHOWA, 1, "Showa"),
140-
(JapaneseEra.HEISEI, 2, "Heisei"))
137+
List(
138+
(JapaneseEra.MEIJI, -1, "Meiji"),
139+
(JapaneseEra.TAISHO, 0, "Taisho"),
140+
(JapaneseEra.SHOWA, 1, "Showa"),
141+
(JapaneseEra.HEISEI, 2, "Heisei"),
142+
(JapaneseEra.REIWA, 3, "Reiwa")
143+
)
141144
}
142145

143146
test("test_Japanese_Eras") {
@@ -153,7 +156,7 @@ class TestJapaneseChronology extends AnyFunSuite with AssertionsHelper {
153156
}
154157

155158
test("test_Japanese_badEras") {
156-
val badEras: Array[Int] = Array(-1000, -998, -997, -2, 3, 4, 1000)
159+
val badEras: Array[Int] = Array(-1000, -998, -997, -2, 4, 5, 1000)
157160
for (badEra <- badEras)
158161
try {
159162
val era: Era = JapaneseChronology.INSTANCE.eraOf(badEra)
@@ -180,9 +183,9 @@ class TestJapaneseChronology extends AnyFunSuite with AssertionsHelper {
180183
// ignore expected exception
181184
}
182185
val additional = TTBPJapaneseEra.registerEra(LocalDate.of(2100, 1, 1), "TestAdditional")
183-
assertEquals(JapaneseEra.of(3), additional)
186+
assertEquals(JapaneseEra.of(4), additional)
184187
assertEquals(JapaneseEra.valueOf("TestAdditional"), additional)
185-
assertEquals(JapaneseEra.values.apply(4), additional)
188+
assertEquals(JapaneseEra.values.apply(5), additional)
186189
try {
187190
TTBPJapaneseEra.registerEra(LocalDate.of(2200, 1, 1), "TestAdditional2")
188191
fail("JapaneseEra.registerEra should have failed")
@@ -202,7 +205,10 @@ class TestJapaneseChronology extends AnyFunSuite with AssertionsHelper {
202205
(JapaneseChronology.INSTANCE.date(1926, 12, 25), "Japanese Showa 1-12-25"),
203206
(JapaneseChronology.INSTANCE.date(1989, 1, 7), "Japanese Showa 64-01-07"),
204207
(JapaneseChronology.INSTANCE.date(1989, 1, 8), "Japanese Heisei 1-01-08"),
205-
(JapaneseChronology.INSTANCE.date(2012, 12, 6), "Japanese Heisei 24-12-06")
208+
(JapaneseChronology.INSTANCE.date(2012, 12, 6), "Japanese Heisei 24-12-06"),
209+
(JapaneseChronology.INSTANCE.date(2019, 4, 30), "Japanese Heisei 31-04-30"),
210+
(JapaneseChronology.INSTANCE.date(2019, 5, 1), "Japanese Reiwa 1-05-01"),
211+
(JapaneseChronology.INSTANCE.date(2020, 12, 24), "Japanese Reiwa 2-12-24")
206212
)
207213

208214
test("test_toString") {

tests/shared/src/test/scala/org/threeten/bp/format/TestDateTimeTextPrinting.scala

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,4 +172,26 @@ class TestDateTimeTextPrinting extends AnyFunSuite with AssertionsHelper {
172172
val dt: LocalDateTime = LocalDateTime.of(2010, 2, 1, 0, 0)
173173
assertEquals(f.format(dt), "2")
174174
}
175+
176+
test("formatFullDate") {
177+
Locale.setDefault(Locale.CANADA) // Passes for both US and CANADA
178+
val formatFullDate = DateTimeFormatter.ofPattern("MMMM dd, yyyy")
179+
val dt = LocalDateTime.of(2018, 1, 30, 11, 2, 45, 750000)
180+
assertResult("January 30, 2018")(dt.format(formatFullDate))
181+
}
182+
183+
test("formatDayOfWeek") {
184+
Locale.setDefault(Locale.CANADA) // Passes for US
185+
val formatDayOfWeek = DateTimeFormatter.ofPattern("cccc MMM d") // Thursday Jan. 25
186+
val dt = LocalDateTime.of(2018, 1, 30, 11, 2, 45, 750000)
187+
assertResult("Tuesday Jan. 30")(dt.format(formatDayOfWeek))
188+
}
189+
190+
test("formatTime_AM_PM") {
191+
Locale.setDefault(Locale.CANADA) // Fails for both US and CANADA
192+
val formatTime_AM_PM = DateTimeFormatter.ofPattern("h:mm a") // 10:15 PM
193+
val dt = LocalDateTime.of(2018, 1, 30, 11, 2, 45, 750000)
194+
assertResult("11:02 a.m.")(dt.format(formatTime_AM_PM))
195+
}
196+
175197
}

0 commit comments

Comments
 (0)