[1] 
[[CLDR]] / [[ICU]] は[[和暦]]に対応しています。

[2] 
[[Mac OS X]] / [[iOS]]、 [[Chrome]]、 [[Firefox]] など多くのソフトウェアが [[ICU]]
を組み込んでいます。

[29] 
つまり広く使われているのですが、困ったことにひどく低品質です。

* 元号コード

[4] 
独自の[[元号コード]]を使っています。
[SEE[ [[CLDR元号コード]] ]]

* 古代の元号

[20] 
古代の初期の[[元号]]の扱いはそもそも非常に難しいです。
[SEE[ [[日本古代の日時]] ]]

[21] 
[[元号]]制定前は[[天皇疑似元号]]を使って表す慣習がありますが、
それに対応していません。
[[大化]]以前はすべて[[大化]]になり、
[[大宝]]までの空白期は直前の[[元号]]の[[延長年号]]になります
[SRC[>>30, >>18]]。

;; [22] これが悪い、というわけでもありませんが、
[[西暦和暦誤認バグ]]で[[大化]]が出てくるのはこの仕様のためです。

[23] 
なぜか[[白鳳]]の一種に対応しています。
これが当時実在した[[元号]]でないことは[[昭和時代]]初期くらいから定説になっているのですが、
[[平成時代]]初期頃まで一般の[[元号一覧]]に掲載されていることがありました。
[SEE[ [[日本古代の日時]], [[白鳳]] ]]
その亡霊がなぜか未だ生き残っているようです。


* 不具合

[3] 
なにかと壊れています。

[6] 
[[西暦和暦誤認バグ]]:
[[iOSアプリ]]で多く報告されているバグ。
不具合の原因は[[アプリ]]側と考えられますが、
ライブラリーの設計に起因する問題と思われます。
[[CLDR]] / [[ICU]] の仕様に問題があるのか、 
[[Apple]] の提供するライブラリーの仕様に問題があるのかは要検討。


** 暦法の不具合

[5] 
本来の[[和暦]]は明治5年までを[[旧暦]]としなければなりませんが、
[[ICU]] は[[旧暦]]に対応していません。

[17] 
[[明治改暦]]以前がなぜか[[イタリア式ユリウスグレゴリオ暦]]になってしまいます。
[SRC[>>30, >>18]]

[REFS[
- [30] [CSECTION[[[toLocaleString]]]]
]REFS]

** 改元の不具合

[12] 
[[日本南北朝時代の元号]]の扱いがおかしいです。
なぜか[[南朝]]と[[北朝]]が混じっています [SRC[>>30, >>14, >>18]]。
一部足りていない[[元号]]もあります。

[15] 
[[明治改暦]]以前の[[改元日]]が間違っています。遅くても[TIME[平成30(2018)年][2018]]には不具合として認知されているはずです
[SRC[>>16, >>13, >>14]]
が、
放置されています。

[19] 
その他[[年数]]がおかしいなど謎挙動が発生することがあります。
[SRC[>>14, >>18, >>24]]

[33] 
どうやら [[CLDR]] の開発陣にはこれを修正する能力がないらしく、
明治より前のデータを削除する方向で進めているようです。
[SRC[>>13, >>14, >>32]]

;; [34] 
壊れた異常な実装が広まっている状態が是正されるのは良いことですが、
正しい実装に置き換えるのではなく削除するのを良しとするあたり、
文化の[[多様性]]を尊重するべき性格のプロジェクトが取るべき態度なのかは疑問が残りますね。
[[日本]]の[[改元]]や[[旧暦]]の正しい情報を調べて実装することくらい、
少し頑張ればできるはずなのですから。 (世界各地のマイナー[[日時制度]]に比べれば情報が多くて遥かにやりやすい方のはずなのに、
[[日本]]すらこの扱いなのですから、他の諸国、諸民族の[[日時制度]]への対応は推して知るべしでしょう。)

;; [38] 
部分的な改善のための実装案は提出されているようですが、
そうしたものすら却下されているようです。
[SRC[>>35, >>36]]
実装を改善し世界各地の文化を適切に処理できるようにしようという意思が開発陣から根本的に欠如していて、
現状維持で精一杯、できればトラブルの種は削りたいといったところでしょうか。

[SEE[ 正しいデータは[[元号一覧データファイル]], 他の実装の状況は[[元号一覧]] ]]

[REFS[
-
[16] 
[CITE@ja['''['''ICU-20024''']''' Start date for the Meiji era is wrong for the Japanese Calendar - [[Unicode Consortium]]]], [TIME[2022-08-23T08:44:58.000Z]] <https://unicode-org.atlassian.net/browse/ICU-20024>
-
[13] 
[CITE@ja['''['''CLDR-11375''']''' Start date for the Meiji era is wrong for the Japanese Calendar - [[Unicode Consortium]]]], [TIME[2022-08-23T08:44:32.000Z]] <https://unicode-org.atlassian.net/browse/CLDR-11375>
- 
[14] 
[CITE@ja['''['''CLDR-11400''']''' Deprecate Japanese era data before Meiji - [[Unicode Consortium]]]], [TIME[2022-08-23T08:40:00.000Z]] <https://unicode-org.atlassian.net/browse/CLDR-11400>
-
[32] 
[CITE@en['''['''CLDR-18608''']''' Add release note for future historic Japanese eras removal - Unicode Consortium]], [TIME[2025-07-26T03:55:19.000Z]] <https://unicode-org.atlassian.net/browse/CLDR-18608>
-
[35] 
[CITE@en[Fix Japanese era start dates by robertbastian · Pull Request #4586 · unicode-org/cldr · GitHub]], [TIME[2025-07-26T04:01:05.000Z]] <https://github.com/unicode-org/cldr/pull/4586/files>
-
[36] 
[CITE@en[CLDR-11375 Fix Meiji start date by robertbastian · Pull Request #4610 · unicode-org/cldr · GitHub]], [TIME[2025-07-26T04:01:27.000Z]] <https://github.com/unicode-org/cldr/pull/4610/files>
-
[18] [CITE@ja[Intl.DateTimeFormat による明治以前の和暦の扱い - [[Qiita]]]], [TIME[2022-08-21T05:40:39.000Z]] <https://qiita.com/nue_of_k/items/ea3dae4a1be9ad6ac953>
-
[24] 
[CITE@en[大化の改新が二回起こる件について(蘇我入鹿は二度死ぬ) · [[GitHub]]]], [TIME[2022-08-23T09:04:29.000Z]] <https://gist.github.com/tadd/cb4276e57fbf21fa4dd3bba453c4285e>
-
[37] 
[CITE@ja[ja-JP-u-ca-japaneseの旧暦の開始期間が間違っている]], [TIME[2025-07-26T04:01:45.000Z]] <https://zenn.dev/misogohei/articles/83a94a8d026d60>

]REFS]

[HISTORY[

[27] 
[[永仁]] ([TIME[y~1119]]) の[[改元日]]が
[CODE[1293-8-55]]
になっているという[[不具合]]が長年発見されずにいました。
[SRC[>>26]]

[28] 
正しくは[TIME[旧暦の西暦1293年8月5日][kyuureki:1293-08-05]]。

[REFS[
-
[26] 
[CITE@ja['''['''CLDR-11399''']''' Broken Japanese era data - [[Unicode Consortium]]]], [TIME[2022-08-23T09:11:57.000Z]] <https://unicode-org.atlassian.net/browse/CLDR-11399>
]REFS]

]HISTORY]

* 関連

[25] 
[[CLDR]] / [[ICU]] は便利ではあるのですけど、
[WEAK[(少なくても[[日時処理]]については、)]]
[[日本]]に限らず全体的に低品質な印象があります。
[[CLDR]] / [[ICU]] はまともでもそれを使う[[アプリケーション]]側の配慮が不十分なケースもあります。
[SEE[ [[CLDR]], [[ICU]], [[toLocaleString]] ]]


[39] 
低品質で壊れているにも関わらず
[[ECMA-402]]
のために [[Web]] や [[JS]] で[[事実上の標準]]になっているのが大問題なんですよね。
昔は一応 [[IE]] の実装があったのですけれども、今では他に[[相互運用可能]]な独立した実装がなく代替不可という...
本来これは[[標準]]として認めるべきではない状況なのですけど、
そうはいっても今更廃止するわけにもいかないですし、代わりがすぐに出てくる状況でもないですし、
にも関わらず新機能もどんどん追加されていますし、困ったものです。


* 歴史

-[10] [CITE@ja['''['''CLDR-707''']''' Add supplemental data with date ranges for calendars - Unicode Consortium]], [TIME[2022-08-23T08:13:03.000Z]] <https://unicode-org.atlassian.net/browse/CLDR-707>
-[9] [CITE@en[CLDR-707 supplemental cal data]], [[srl295]], [TIME[2007-07-24 23:53:32 +09:00]], [TIME[2022-08-23T08:12:31.000Z]] <https://github.com/unicode-org/cldr/commit/b6192c03>

[11] どこから引っ張ってきたデータなのか何も情報がない...

-[8] [CITE@ja['''['''ICU-1869''']''' Japanese Calendar eras - Unicode Consortium]], [TIME[2022-08-23T08:11:39.000Z]] <https://unicode-org.atlassian.net/browse/ICU-1869>
-[7] [CITE@ja['''['''ICU-6842''']''' ambiguous era values in japanese calendar - Unicode Consortium]], [TIME[2022-08-23T08:10:52.000Z]] <https://unicode-org.atlassian.net/browse/ICU-6842>

* メモ

[31] [CITE@ja[JavaScriptが令和に対応。Intl.DateTimeFormatで日付を和暦(元号)表記に変換する - Qiita]], [TIME[2022-08-26T15:14:27.000Z]] <https://qiita.com/shisama/items/cb0abb5435fac82e87d6>