ECMAScript国際化API「DateTimeFormat」の謎

ECMAScriptの国際化APIでIntl.DateTimeFormatというものがあるのだが、これで奇妙な挙動を見つけた。

夏にピッタリの怖い内容です。

# 0年から645年までをフォーマットすると元号が

const fs = require('fs')

const date = new Date('2020-01-01')
const format = date => Intl.DateTimeFormat('ja-JP-u-ca-japanese', { era: 'long' }).format(date)

const writeStream = fs.createWriteStream('./date.log', {
  flags: 'a+'
})

for (let index = 0; index < 2021; index++) {
  writeStream.write(`${format(date.setYear(index))} (${index} years)\n`)
}

下記は上記のコードを実行した際の、出力結果を切り抜いたものである。

全体がみたい場合はこちら(opens new window)

明治3311(0 years)
明治3411(1 years)
明治3511(2 years)
明治3611(3 years)
明治3711(4 years)
明治3811(5 years)
明治3911(6 years)
明治4011(7 years)
明治4111(8 years)
明治4211(9 years)
明治4311(10 years)
明治4411(11 years)
明治4511(12 years)
大正211(13 years)
大正311(14 years)
大正411(15 years)
大正511(16 years)
大正611(17 years)
大正711(18 years)
大正811(19 years)
大正911(20 years)
大正1011(21 years)
大正1111(22 years)
大正1211(23 years)
大正1311(24 years)
大正1411(25 years)
大正1511(26 years)
昭和211(27 years)
昭和311(28 years)
昭和411(29 years)
昭和511(30 years)
昭和611(31 years)
昭和711(32 years)
昭和811(33 years)
昭和911(34 years)
昭和1011(35 years)
昭和1111(36 years)
昭和1211(37 years)
昭和1311(38 years)
昭和1411(39 years)
昭和1511(40 years)
昭和1611(41 years)
昭和1711(42 years)
昭和1811(43 years)
昭和1911(44 years)
昭和2011(45 years)
昭和2111(46 years)
昭和2211(47 years)
昭和2311(48 years)
昭和2411(49 years)
昭和2511(50 years)
昭和2611(51 years)
昭和2711(52 years)
昭和2811(53 years)
昭和2911(54 years)
昭和3011(55 years)
昭和3111(56 years)
昭和3211(57 years)
昭和3311(58 years)
昭和3411(59 years)
昭和3511(60 years)
昭和3611(61 years)
昭和3711(62 years)
昭和3811(63 years)
昭和3911(64 years)
昭和4011(65 years)
昭和4111(66 years)
昭和4211(67 years)
昭和4311(68 years)
昭和4411(69 years)
昭和4511(70 years)
昭和4611(71 years)
昭和4711(72 years)
昭和4811(73 years)
昭和4911(74 years)
昭和5011(75 years)
昭和5111(76 years)
昭和5211(77 years)
昭和5311(78 years)
昭和5411(79 years)
昭和5511(80 years)
昭和5611(81 years)
昭和5711(82 years)
昭和5811(83 years)
昭和5911(84 years)
昭和6011(85 years)
昭和6111(86 years)
昭和6211(87 years)
昭和6311(88 years)
昭和6411(89 years)
平成211(90 years)
平成311(91 years)
平成411(92 years)
平成511(93 years)
平成611(94 years)
平成711(95 years)
平成811(96 years)
平成911(97 years)
平成1011(98 years)
平成1111(99 years)
大化-54413(100 years)
大化-54312(101 years)
大化-54212(102 years)
大化-54112(103 years)
大化-54012(104 years)
大化-53912(105 years)
大化-53812(106 years)
大化-53712(107 years)
大化-53612(108 years)
大化-53512(109 years)
大化-53412(110 years)
大化-53312(111 years)
大化-53212(112 years)
大化-53112(113 years)
大化-53012(114 years)
大化-52912(115 years)
大化-52812(116 years)
大化-52712(117 years)
大化-52612(118 years)
大化-52512(119 years)
大化-52412(120 years)
大化-52312(121 years)
大化-52212(122 years)
大化-52112(123 years)
大化-52012(124 years)
大化-51912(125 years)
大化-51812(126 years)
大化-51712(127 years)
大化-51612(128 years)
大化-51512(129 years)
大化-51412(130 years)
大化-51312(131 years)
大化-51212(132 years)
大化-51112(133 years)
大化-51012(134 years)
大化-50912(135 years)
大化-50812(136 years)
大化-50712(137 years)
大化-50612(138 years)
大化-50512(139 years)
大化-50412(140 years)
大化-50312(141 years)
大化-50212(142 years)
大化-50112(143 years)
大化-50012(144 years)
大化-49912(145 years)
大化-49812(146 years)
大化-49712(147 years)
大化-49612(148 years)
大化-49512(149 years)
大化-49412(150 years)
大化-49312(151 years)
大化-49212(152 years)
大化-49112(153 years)
大化-49012(154 years)
大化-48912(155 years)
大化-48812(156 years)
大化-48712(157 years)
大化-48612(158 years)
大化-48512(159 years)
大化-48412(160 years)
大化-48312(161 years)
大化-48212(162 years)
大化-48112(163 years)
大化-48012(164 years)
大化-47912(165 years)
大化-47812(166 years)
大化-47712(167 years)
大化-47612(168 years)
大化-47512(169 years)
大化-47412(170 years)
大化-47312(171 years)
大化-47212(172 years)
大化-47112(173 years)
大化-47012(174 years)
大化-46912(175 years)
大化-46812(176 years)
大化-46712(177 years)
大化-46612(178 years)
大化-46512(179 years)
大化-46412(180 years)
大化-46312(181 years)
大化-46212(182 years)
大化-46112(183 years)
大化-46012(184 years)
大化-45912(185 years)
大化-45812(186 years)
大化-45712(187 years)
大化-45612(188 years)
大化-45512(189 years)
大化-45412(190 years)
大化-45312(191 years)
大化-45212(192 years)
大化-45112(193 years)
大化-45012(194 years)
大化-44912(195 years)
大化-44812(196 years)
大化-44712(197 years)
大化-44612(198 years)
大化-44512(199 years)
大化-44412(200 years)
大化-44311(201 years)
大化-44211(202 years)
大化-44111(203 years)
大化-44011(204 years)
大化-43911(205 years)
大化-43811(206 years)
大化-43711(207 years)
大化-43611(208 years)
大化-43511(209 years)
大化-43411(210 years)
大化-43311(211 years)
大化-43211(212 years)
大化-43111(213 years)
大化-43011(214 years)
大化-42911(215 years)
大化-42811(216 years)
大化-42711(217 years)
大化-42611(218 years)
大化-42511(219 years)
大化-42411(220 years)
大化-42311(221 years)
大化-42211(222 years)
大化-42111(223 years)
大化-42011(224 years)
大化-41911(225 years)
大化-41811(226 years)
大化-41711(227 years)
大化-41611(228 years)
大化-41511(229 years)
大化-41411(230 years)
大化-41311(231 years)
大化-41211(232 years)
大化-41111(233 years)
大化-41011(234 years)
大化-40911(235 years)
大化-40811(236 years)
大化-40711(237 years)
大化-40611(238 years)
大化-40511(239 years)
大化-40411(240 years)
大化-40311(241 years)
大化-40211(242 years)
大化-40111(243 years)
大化-40011(244 years)
大化-39911(245 years)
大化-39811(246 years)
大化-39711(247 years)
大化-39611(248 years)
大化-39511(249 years)
大化-39411(250 years)
大化-39311(251 years)
大化-39211(252 years)
大化-39111(253 years)
大化-39011(254 years)
大化-38911(255 years)
大化-38811(256 years)
大化-38711(257 years)
大化-38611(258 years)
大化-38511(259 years)
大化-38411(260 years)
大化-38311(261 years)
大化-38211(262 years)
大化-38111(263 years)
大化-38011(264 years)
大化-37911(265 years)
大化-37811(266 years)
大化-37711(267 years)
大化-37611(268 years)
大化-37511(269 years)
大化-37411(270 years)
大化-37311(271 years)
大化-37211(272 years)
大化-37111(273 years)
大化-37011(274 years)
大化-36911(275 years)
大化-36811(276 years)
大化-36711(277 years)
大化-36611(278 years)
大化-36511(279 years)
大化-36411(280 years)
大化-36311(281 years)
大化-36211(282 years)
大化-36111(283 years)
大化-36011(284 years)
大化-35911(285 years)
大化-35811(286 years)
大化-35711(287 years)
大化-35611(288 years)
大化-35511(289 years)
大化-35411(290 years)
大化-35311(291 years)
大化-35211(292 years)
大化-35111(293 years)
大化-35011(294 years)
大化-34911(295 years)
大化-34811(296 years)
大化-34711(297 years)
大化-34611(298 years)
大化-34511(299 years)
大化-34411(300 years)
大化-3441231(301 years)
大化-3431231(302 years)
大化-3421231(303 years)
大化-3411231(304 years)
大化-3401231(305 years)
大化-3391231(306 years)
大化-3381231(307 years)
大化-3371231(308 years)
大化-3361231(309 years)
大化-3351231(310 years)
大化-3341231(311 years)
大化-3331231(312 years)
大化-3321231(313 years)
大化-3311231(314 years)
大化-3301231(315 years)
大化-3291231(316 years)
大化-3281231(317 years)
大化-3271231(318 years)
大化-3261231(319 years)
大化-3251231(320 years)
大化-3241231(321 years)
大化-3231231(322 years)
大化-3221231(323 years)
大化-3211231(324 years)
大化-3201231(325 years)
大化-3191231(326 years)
大化-3181231(327 years)
大化-3171231(328 years)
大化-3161231(329 years)
大化-3151231(330 years)
大化-3141231(331 years)
大化-3131231(332 years)
大化-3121231(333 years)
大化-3111231(334 years)
大化-3101231(335 years)
大化-3091231(336 years)
大化-3081231(337 years)
大化-3071231(338 years)
大化-3061231(339 years)
大化-3051231(340 years)
大化-3041231(341 years)
大化-3031231(342 years)
大化-3021231(343 years)
大化-3011231(344 years)
大化-3001231(345 years)
大化-2991231(346 years)
大化-2981231(347 years)
大化-2971231(348 years)
大化-2961231(349 years)
大化-2951231(350 years)
大化-2941231(351 years)
大化-2931231(352 years)
大化-2921231(353 years)
大化-2911231(354 years)
大化-2901231(355 years)
大化-2891231(356 years)
大化-2881231(357 years)
大化-2871231(358 years)
大化-2861231(359 years)
大化-2851231(360 years)
大化-2841231(361 years)
大化-2831231(362 years)
大化-2821231(363 years)
大化-2811231(364 years)
大化-2801231(365 years)
大化-2791231(366 years)
大化-2781231(367 years)
大化-2771231(368 years)
大化-2761231(369 years)
大化-2751231(370 years)
大化-2741231(371 years)
大化-2731231(372 years)
大化-2721231(373 years)
大化-2711231(374 years)
大化-2701231(375 years)
大化-2691231(376 years)
大化-2681231(377 years)
大化-2671231(378 years)
大化-2661231(379 years)
大化-2651231(380 years)
大化-2641231(381 years)
大化-2631231(382 years)
大化-2621231(383 years)
大化-2611231(384 years)
大化-2601231(385 years)
大化-2591231(386 years)
大化-2581231(387 years)
大化-2571231(388 years)
大化-2561231(389 years)
大化-2551231(390 years)
大化-2541231(391 years)
大化-2531231(392 years)
大化-2521231(393 years)
大化-2511231(394 years)
大化-2501231(395 years)
大化-2491231(396 years)
大化-2481231(397 years)
大化-2471231(398 years)
大化-2461231(399 years)
大化-2451231(400 years)
大化-2441231(401 years)
大化-2431231(402 years)
大化-2421231(403 years)
大化-2411231(404 years)
大化-2401231(405 years)
大化-2391231(406 years)
大化-2381231(407 years)
大化-2371231(408 years)
大化-2361231(409 years)
大化-2351231(410 years)
大化-2341231(411 years)
大化-2331231(412 years)
大化-2321231(413 years)
大化-2311231(414 years)
大化-2301231(415 years)
大化-2291231(416 years)
大化-2281231(417 years)
大化-2271231(418 years)
大化-2261231(419 years)
大化-2251231(420 years)
大化-2241231(421 years)
大化-2231231(422 years)
大化-2221231(423 years)
大化-2211231(424 years)
大化-2201231(425 years)
大化-2191231(426 years)
大化-2181231(427 years)
大化-2171231(428 years)
大化-2161231(429 years)
大化-2151231(430 years)
大化-2141231(431 years)
大化-2131231(432 years)
大化-2121231(433 years)
大化-2111231(434 years)
大化-2101231(435 years)
大化-2091231(436 years)
大化-2081231(437 years)
大化-2071231(438 years)
大化-2061231(439 years)
大化-2051231(440 years)
大化-2041231(441 years)
大化-2031231(442 years)
大化-2021231(443 years)
大化-2011231(444 years)
大化-2001231(445 years)
大化-1991231(446 years)
大化-1981231(447 years)
大化-1971231(448 years)
大化-1961231(449 years)
大化-1951231(450 years)
大化-1941231(451 years)
大化-1931231(452 years)
大化-1921231(453 years)
大化-1911231(454 years)
大化-1901231(455 years)
大化-1891231(456 years)
大化-1881231(457 years)
大化-1871231(458 years)
大化-1861231(459 years)
大化-1851231(460 years)
大化-1841231(461 years)
大化-1831231(462 years)
大化-1821231(463 years)
大化-1811231(464 years)
大化-1801231(465 years)
大化-1791231(466 years)
大化-1781231(467 years)
大化-1771231(468 years)
大化-1761231(469 years)
大化-1751231(470 years)
大化-1741231(471 years)
大化-1731231(472 years)
大化-1721231(473 years)
大化-1711231(474 years)
大化-1701231(475 years)
大化-1691231(476 years)
大化-1681231(477 years)
大化-1671231(478 years)
大化-1661231(479 years)
大化-1651231(480 years)
大化-1641231(481 years)
大化-1631231(482 years)
大化-1621231(483 years)
大化-1611231(484 years)
大化-1601231(485 years)
大化-1591231(486 years)
大化-1581231(487 years)
大化-1571231(488 years)
大化-1561231(489 years)
大化-1551231(490 years)
大化-1541231(491 years)
大化-1531231(492 years)
大化-1521231(493 years)
大化-1511231(494 years)
大化-1501231(495 years)
大化-1491231(496 years)
大化-1481231(497 years)
大化-1471231(498 years)
大化-1461231(499 years)
大化-1451231(500 years)
大化-1441230(501 years)
大化-1431230(502 years)
大化-1421230(503 years)
大化-1411230(504 years)
大化-1401230(505 years)
大化-1391230(506 years)
大化-1381230(507 years)
大化-1371230(508 years)
大化-1361230(509 years)
大化-1351230(510 years)
大化-1341230(511 years)
大化-1331230(512 years)
大化-1321230(513 years)
大化-1311230(514 years)
大化-1301230(515 years)
大化-1291230(516 years)
大化-1281230(517 years)
大化-1271230(518 years)
大化-1261230(519 years)
大化-1251230(520 years)
大化-1241230(521 years)
大化-1231230(522 years)
大化-1221230(523 years)
大化-1211230(524 years)
大化-1201230(525 years)
大化-1191230(526 years)
大化-1181230(527 years)
大化-1171230(528 years)
大化-1161230(529 years)
大化-1151230(530 years)
大化-1141230(531 years)
大化-1131230(532 years)
大化-1121230(533 years)
大化-1111230(534 years)
大化-1101230(535 years)
大化-1091230(536 years)
大化-1081230(537 years)
大化-1071230(538 years)
大化-1061230(539 years)
大化-1051230(540 years)
大化-1041230(541 years)
大化-1031230(542 years)
大化-1021230(543 years)
大化-1011230(544 years)
大化-1001230(545 years)
大化-991230(546 years)
大化-981230(547 years)
大化-971230(548 years)
大化-961230(549 years)
大化-951230(550 years)
大化-941230(551 years)
大化-931230(552 years)
大化-921230(553 years)
大化-911230(554 years)
大化-901230(555 years)
大化-891230(556 years)
大化-881230(557 years)
大化-871230(558 years)
大化-861230(559 years)
大化-851230(560 years)
大化-841230(561 years)
大化-831230(562 years)
大化-821230(563 years)
大化-811230(564 years)
大化-801230(565 years)
大化-791230(566 years)
大化-781230(567 years)
大化-771230(568 years)
大化-761230(569 years)
大化-751230(570 years)
大化-741230(571 years)
大化-731230(572 years)
大化-721230(573 years)
大化-711230(574 years)
大化-701230(575 years)
大化-691230(576 years)
大化-681230(577 years)
大化-671230(578 years)
大化-661230(579 years)
大化-651230(580 years)
大化-641230(581 years)
大化-631230(582 years)
大化-621230(583 years)
大化-611230(584 years)
大化-601230(585 years)
大化-591230(586 years)
大化-581230(587 years)
大化-571230(588 years)
大化-561230(589 years)
大化-551230(590 years)
大化-541230(591 years)
大化-531230(592 years)
大化-521230(593 years)
大化-511230(594 years)
大化-501230(595 years)
大化-491230(596 years)
大化-481230(597 years)
大化-471230(598 years)
大化-461230(599 years)
大化-451230(600 years)
大化-441229(601 years)
大化-431229(602 years)
大化-421229(603 years)
大化-411229(604 years)
大化-401229(605 years)
大化-391229(606 years)
大化-381229(607 years)
大化-371229(608 years)
大化-361229(609 years)
大化-351229(610 years)
大化-341229(611 years)
大化-331229(612 years)
大化-321229(613 years)
大化-311229(614 years)
大化-301229(615 years)
大化-291229(616 years)
大化-281229(617 years)
大化-271229(618 years)
大化-261229(619 years)
大化-251229(620 years)
大化-241229(621 years)
大化-231229(622 years)
大化-221229(623 years)
大化-211229(624 years)
大化-201229(625 years)
大化-191229(626 years)
大化-181229(627 years)
大化-171229(628 years)
大化-161229(629 years)
大化-151229(630 years)
大化-141229(631 years)
大化-131229(632 years)
大化-121229(633 years)
大化-111229(634 years)
大化-101229(635 years)
大化-91229(636 years)
大化-81229(637 years)
大化-71229(638 years)
大化-61229(639 years)
大化-51229(640 years)
大化-41229(641 years)
大化-31229(642 years)
大化-21229(643 years)
大化元年1229(644 years)
大化01229(645 years)

大化は日本最初の元号ではなかった!?

一体なぜこんなことに... ちなみにnew Date('645-08-01')をフォーマットするとしっかり大化元年7月29日となる。

仕様書を読めば何か分かるかもしれない、もしどうしてこうなってしまうのか知っていたらツイッターにて教えてくれるとありがたい...