Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
ash0411-maker opened this issue Jun 8, 2022 · 2 comments

Comments

@ash0411-maker
Copy link

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

令和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
@sugi
Copy link
Owner

sugi commented Jun 9, 2022

ありがとうございます。

うーん、そうですね。
確かにフォーマット文字列を追加するのは良いかもしれません ( %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年のグレゴリオ歴改暦前) の処理が微妙だということです。
と言っても、歴史研究などの場合で無い限りは、現実的に問題にならないとは思います。

@ash0411-maker
Copy link
Author

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

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants