@@ -433,16 +433,33 @@ class TestDateFormatter: XCTestCase {
433
433
434
434
formatter. locale = Locale ( identifier: " ja_JP " )
435
435
formatter. calendar = Calendar ( identifier: . japanese)
436
- formatter. dateFormat = " Gy年M月dd日 HH:mm"
436
+ formatter. dateFormat = " Gy年M月d日 HH:mm"
437
437
formatter. timeZone = TimeZone ( abbreviation: " JST " )
438
438
439
- // parse test
440
- let parsed = formatter. date ( from: " 平成31年4月30日 23:10 " )
441
- XCTAssertEqual ( parsed? . timeIntervalSince1970, 1556633400 ) // April 30, 2019, 11:10 PM (JST)
439
+ do {
440
+ // Parse test
441
+ let parsed = formatter. date ( from: " 平成31年4月30日 23:10 " )
442
+ XCTAssertEqual ( parsed? . timeIntervalSince1970, 1556633400 ) // April 30, 2019, 11:10 PM (JST)
443
+
444
+ // Format test
445
+ let dateString = formatter. string ( from: Date ( timeIntervalSince1970: 1556633400 ) ) // April 30, 2019, 11:10 PM (JST)
446
+ XCTAssertEqual ( dateString, " 平成31年4月30日 23:10 " )
447
+ }
442
448
443
- // format test
444
- let dateString = formatter. string ( from: Date ( timeIntervalSince1970: 1556633400 ) ) // April 30, 2019, 11:10 PM (JST)
445
- XCTAssertEqual ( dateString, " 平成31年4月30日 23:10 " )
449
+ // Test for new Japanese era (starting from May 1, 2019)
450
+ do {
451
+ // Parse test
452
+ let parsed = formatter. date ( from: " 令和1年5月1日 23:10 " )
453
+ XCTAssertEqual ( parsed? . timeIntervalSince1970, 1556719800 ) // May 1st, 2019, 11:10 PM (JST)
454
+
455
+ // Test for 元年(Gannen) representaion of 1st year
456
+ let parsedAlt = formatter. date ( from: " 令和元年5月1日 23:10 " )
457
+ XCTAssertEqual ( parsedAlt? . timeIntervalSince1970, 1556719800 ) // May 1st, 2019, 11:10 PM (JST)
458
+
459
+ // Format test
460
+ let dateString = formatter. string ( from: Date ( timeIntervalSince1970: 1556719800 ) ) // May 1st, 2019, 11:10 PM (JST)
461
+ XCTAssertEqual ( dateString, " 令和元年5月1日 23:10 " )
462
+ }
446
463
}
447
464
448
465
func test_orderOfPropertySetters( ) throws {
0 commit comments