wareki icon indicating copy to clipboard operation
wareki copied to clipboard

元号のアルファベット(頭文字)表記ができると嬉しい

Open ash0411-maker opened this issue 2 years ago • 2 comments

いつもありがたく使わせてもらっています!

令和4年→R4年、平成7年→H7年のように元号をアルファベット表記にできたら便利かなと思いIssueに登録しました。 これを実現するために以下のようなコードを書いているのですが、新元号になると対応できないので。。。 (もしドキュメントの確認漏れで、すでに実現可能ならすみません。)

this_year = Date.today.year
wareki_date = Date.new(this_year).to_wareki_date

case wareki_date.era_name
when "平成"
  era_name = "H"
when "令和"
  era_name = "R"
else #新元号
  era_name = ""
end

ash0411-maker avatar Jun 08 '22 01:06 ash0411-maker

ありがとうございます。

うーん、そうですね。 確かにフォーマット文字列を追加するのは良いかもしれません ( %Je を漢字にしてしまったので、ちょっとどういう文字で追加するかは考えないといけませんが……)。

ちなみに、ライブラリ側とは関係ない話になってしまいますが、現時点で簡単に新元号に自動で対応するという目的の場合、ruby 本体の jisx0301 を使うのが良いんじゃないかと思います。

アルファベット表記の元号に関しては、 JIS X 0301 という規格で規定されています。 令和の時も改定が行われて R が追加されました。

ruby 標準で jisx0301メソッドがあるのでこれを使うと一番簡単に取り出せます。

Date.today.jisx0301[/^[A-Z]/]                    # => "R"
Date.parse("1995-03-03").jisx0301[/^[A-Z]/]      # => "H"

これを使うメリットは、ruby だけでできる(ruby 本体の更新だけで新元号も対応できる)ことです。

デメリットとしては、本体由来の問題ですが、明治の初期 (明治1〜6年のグレゴリオ歴改暦前) の処理が微妙だということです。 と言っても、歴史研究などの場合で無い限りは、現実的に問題にならないとは思います。

sugi avatar Jun 09 '22 03:06 sugi

ご教示ありがとうございます!

%Je を漢字にしてしまったので、ちょっとどういう文字で追加するかは考えないといけませんが……

なるほど。検討しなければならない事柄がありますね。。。 jisx0301メソッドを使えば、こちらで私がやろうとすることは解決できそうです。

ash0411-maker avatar Jun 10 '22 00:06 ash0411-maker