wareki
wareki copied to clipboard
元号のアルファベット(頭文字)表記ができると嬉しい
いつもありがたく使わせてもらっています!
令和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
ありがとうございます。
うーん、そうですね。
確かにフォーマット文字列を追加するのは良いかもしれません ( %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年のグレゴリオ歴改暦前) の処理が微妙だということです。 と言っても、歴史研究などの場合で無い限りは、現実的に問題にならないとは思います。
ご教示ありがとうございます!
%Je を漢字にしてしまったので、ちょっとどういう文字で追加するかは考えないといけませんが……
なるほど。検討しなければならない事柄がありますね。。。
jisx0301
メソッドを使えば、こちらで私がやろうとすることは解決できそうです。