Pythonで日本の元号を扱う方法を徹底解説!令和・平成の変換もバッチリ対応
生徒
「Pythonで、日付を令和とか平成の元号で表示したいんですが、できますか?」
先生
「はい、日本の元号(げんごう)を扱うにはちょっと工夫が必要ですが、Pythonでも可能ですよ!」
生徒
「西暦は表示できるけど、和暦はできないと思ってました…」
先生
「実は、datetimeモジュールと、外部ライブラリのjapaneraやjaconvを使うことで、令和・平成といった日本の元号を扱うことができるんです。順を追って見ていきましょう。」
1. Pythonで元号を扱うには?
Python(パイソン)で日付を扱うときには、datetimeモジュールが基本です。しかし、日本の元号(令和・平成・昭和など)は標準ではサポートされていません。
そこで登場するのが、外部ライブラリのjapaneraです。このライブラリを使えば、和暦(われき)への変換や表示が簡単にできます。
2. japaneraライブラリのインストール
japaneraは外部ライブラリなので、最初にインストールが必要です。コマンドプロンプトやターミナルで以下のように入力してください。
pip install japanera
pipはPythonのライブラリを追加するためのコマンドです。初めて使う場合は「ぴっぷ」と覚えておくとよいでしょう。
3. datetimeから令和や平成に変換してみよう
それでは、実際にdatetimeオブジェクトの日付を令和や平成の元号に変換してみましょう。
import datetime
import japanera
date = datetime.date(2024, 1, 15)
era = japanera.gengou(date)
print(f"{date} は {era} です")
2024-01-15 は 令和6年 です
このように、令和の年数が自動で計算されます。
4. 平成・昭和など過去の元号も使えるの?
もちろんです。japanera.gengou()は、過去の年月にも対応していて、自動的に適切な元号に変換してくれます。
import datetime
import japanera
date = datetime.date(1995, 3, 10)
era = japanera.gengou(date)
print(f"{date} は {era} です")
1995-03-10 は 平成7年 です
このように、昭和・平成・令和すべてに対応しています。
5. 元号から西暦に変換する方法
今度は逆に、元号と年数から西暦に変換したいケースです。たとえば「平成31年」は2019年になります。このような場合もjapaneraで対応可能です。
from japanera import EraDate
era_date = EraDate('平成', 31, 4, 30)
print(era_date.to_date())
2019-04-30
EraDateクラスを使って、和暦の日付から西暦(グレゴリオ暦)に変換できます。
6. jaconvで文字の変換も覚えておこう
元号の表示に関連して、全角・半角の変換なども必要になることがあります。そういうときに便利なのがjaconvライブラリです。
インストールはこちら:
pip install jaconv
たとえば「平成31年」を数字として扱うためには、全角→半角変換が必要になることがあります。
import jaconv
zenkaku = "31"
hankaku = jaconv.z2h(zenkaku, digit=True)
print(hankaku)
31
z2h()は、全角(ぜんかく)を半角(はんかく)に変える関数です。
7. 実用例:入力された元号と年から西暦を判定
実際のアプリケーションでは、ユーザーが「平成31年」のように入力してくるケースもあります。その場合の処理例です。
from japanera import EraDate
era = input("元号(例:令和, 平成):")
year = int(input("年(数字のみ):"))
month = int(input("月:"))
day = int(input("日:"))
era_date = EraDate(era, year, month, day)
print(f"西暦では {era_date.to_date()} です")
元号(例:令和, 平成):平成
年(数字のみ):31
月:4
日:30
西暦では 2019-04-30 です
このように、元号を使った日付入力にも対応可能になります。
8. 注意点とエラー回避のポイント
- 日付が元号の範囲外の場合はエラーになります
→ たとえば、平成は1989年1月8日から2019年4月30日まで。それ以外の日付を平成として指定するとエラーになります。 - 入力ミスを避けるため、元号名や数字は正確に
→ 入力チェックを組み込むと、より安全なアプリケーションになります。 - ライブラリは事前にインストールしておく
→pip install japaneraやpip install jaconvを忘れずに実行しましょう。
まとめ
Pythonで日本の元号を扱うポイント
Pythonで日本の元号を扱う場合、標準ライブラリであるdatetimeだけでは令和や平成といった和暦表現に対応できないため、外部ライブラリを組み合わせて活用することが重要です。特にjapaneraライブラリを使うことで、西暦から和暦への変換や、和暦から西暦への変換をスムーズに行うことができます。
また、実務や業務システムでは、入力値として「平成31年」などの全角文字が混ざるケースも少なくありません。このような場合にはjaconvを活用して全角から半角への変換を行うことで、データの正確な処理が可能になります。こうした工夫を組み合わせることで、日本特有の元号処理にも柔軟に対応できるようになります。
実務で役立つ活用シーン
元号変換の処理は、住民票や申請書などの帳票出力、企業の業務システム、学校の管理システムなど、幅広い場面で利用されます。特に日本国内向けのサービスでは、令和や平成といった表記を求められるケースが多いため、Pythonで元号を扱えることは実務スキルとして大きな強みになります。
さらに、ユーザー入力を受け取る場面では、入力ミスや不正な日付への対策も重要です。たとえば、存在しない日付や元号の範囲外の日付が入力された場合にはエラーになるため、バリデーション処理を組み込むことで安全性を高めることができます。
サンプルプログラムで理解を深める
以下は、ユーザーが入力した元号と年月日をもとに、西暦へ変換する簡単なサンプルです。入力チェックも含めた基本的な構成になっているため、実務にも応用しやすい内容です。
from japanera import EraDate
def convert_to_seireki():
try:
era = input("元号(例:令和, 平成):")
year = int(input("年:"))
month = int(input("月:"))
day = int(input("日:"))
era_date = EraDate(era, year, month, day)
print(f"西暦では {era_date.to_date()} です")
except Exception as e:
print("入力内容に誤りがあります。正しい日付を入力してください。")
print(f"エラー内容: {e}")
if __name__ == "__main__":
convert_to_seireki()
このように関数化しておくことで、再利用しやすくなり、保守性の高いコードになります。また、例外処理を追加することで、ユーザーの入力ミスにも柔軟に対応できます。
さらに理解を深めるためのポイント
元号処理をより深く理解するためには、日本の元号の切り替わりのタイミングを意識することも大切です。たとえば平成から令和への切り替えは二〇一九年五月一日に行われています。このような境界日を正しく扱えるかどうかで、システムの信頼性が大きく変わります。
また、日付処理はバグが発生しやすい分野でもあるため、テストケースを充実させることが重要です。過去の元号や未来の日付も含めて検証を行うことで、より堅牢なプログラムを作成できます。
生徒
「Pythonで元号を扱うには、標準機能だけじゃ足りないってことが分かりました。外部ライブラリを使うのがポイントなんですね。」
先生
「その通りです。特にjapaneraを使えば、令和や平成といった和暦の扱いがとても簡単になります。実務でもよく使われる技術ですよ。」
生徒
「あと、全角と半角の違いも意識しないといけないのが意外でした。jaconvも便利ですね。」
先生
「日本語を扱うシステムではとても重要なポイントです。入力データの整形をしっかり行うことで、エラーを減らすことができます。」
生徒
「元号の切り替わりの日付も気をつけないといけないですね。平成と令和の境目は特に重要そうです。」
先生
「はい、その理解はとても大切です。日付処理は細かい部分でミスが起きやすいので、しっかりテストして確認する習慣をつけていきましょう。」
生徒
「今回の内容で、Pythonでも日本独自の表記に対応できることが分かって安心しました!」
先生
「その調子です。実務でも役立つ知識なので、ぜひ応用してみてください。」