カテゴリ: Python 更新日: 2026/05/31

Pythonで日本の元号を扱う方法を徹底解説!令和・平成の変換もバッチリ対応

Pythonで日本の元号(令和・平成)を扱う方法(jaconv / datetime)
Pythonで日本の元号(令和・平成)を扱う方法(jaconv / datetime)

先生と生徒の会話形式で理解しよう

生徒

「Pythonで、日付を令和とか平成の元号で表示したいんですが、できますか?」

先生

「はい、日本の元号(げんごう)を扱うにはちょっと工夫が必要ですが、Pythonでも可能ですよ!」

生徒

「西暦は表示できるけど、和暦はできないと思ってました…」

先生

「実は、datetimeモジュールと、外部ライブラリのjapanerajaconvを使うことで、令和・平成といった日本の元号を扱うことができるんです。順を追って見ていきましょう。」

1. Pythonで元号を扱うには?

1. Pythonで元号を扱うには?
1. Pythonで元号を扱うには?

Python(パイソン)で日付を扱うときには、datetimeモジュールが基本です。しかし、日本の元号(令和・平成・昭和など)は標準ではサポートされていません。

そこで登場するのが、外部ライブラリのjapaneraです。このライブラリを使えば、和暦(われき)への変換や表示が簡単にできます。

2. japaneraライブラリのインストール

2. japaneraライブラリのインストール
2. japaneraライブラリのインストール

japaneraは外部ライブラリなので、最初にインストールが必要です。コマンドプロンプトやターミナルで以下のように入力してください。


pip install japanera

pipはPythonのライブラリを追加するためのコマンドです。初めて使う場合は「ぴっぷ」と覚えておくとよいでしょう。

3. datetimeから令和や平成に変換してみよう

3. datetimeから令和や平成に変換してみよう
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. 平成・昭和など過去の元号も使えるの?

4. 平成・昭和など過去の元号も使えるの?
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. 元号から西暦に変換する方法

5. 元号から西暦に変換する方法
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で文字の変換も覚えておこう

6. jaconvで文字の変換も覚えておこう
6. jaconvで文字の変換も覚えておこう

元号の表示に関連して、全角・半角の変換なども必要になることがあります。そういうときに便利なのがjaconvライブラリです。

インストールはこちら:


pip install jaconv

たとえば「平成31年」を数字として扱うためには、全角→半角変換が必要になることがあります。


import jaconv

zenkaku = "31"
hankaku = jaconv.z2h(zenkaku, digit=True)
print(hankaku)

31

z2h()は、全角(ぜんかく)を半角(はんかく)に変える関数です。

7. 実用例:入力された元号と年から西暦を判定

7. 実用例:入力された元号と年から西暦を判定
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. 注意点とエラー回避のポイント

8. 注意点とエラー回避のポイント
8. 注意点とエラー回避のポイント
  • 日付が元号の範囲外の場合はエラーになります
    → たとえば、平成は1989年1月8日から2019年4月30日まで。それ以外の日付を平成として指定するとエラーになります。
  • 入力ミスを避けるため、元号名や数字は正確に
    → 入力チェックを組み込むと、より安全なアプリケーションになります。
  • ライブラリは事前にインストールしておく
    pip install japanerapip 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でも日本独自の表記に対応できることが分かって安心しました!」

先生

「その調子です。実務でも役立つ知識なので、ぜひ応用してみてください。」

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
Python の日時操作の記事一覧へ
新着記事
New1
Python
Pythonの整数と浮動小数点数の違いとは?数値型の基本を解説
New2
Python
Pythonで文字列をリストに変換する方法!split()とjoin()の使い方
New3
Python
Pythonのbreakとcontinueの違いとは?ループの制御方法をマスター
New4
Python
Pythonのstartswith()・endswith()の使い方!文字列の前後をチェック
人気記事
No.1
Java&Spring記事人気No1
PHP
PHPの特殊文字とエスケープ処理を完全ガイド!初心者向けにhtmlspecialcharsとhtmlentitiesをやさしく解説
No.2
Java&Spring記事人気No2
PHP
PHP の文字列のフォーマット(sprintf, printf)
No.3
Java&Spring記事人気No3
Python
Pythonで文字列を置換する方法!replace()の使い方と正規表現の活用
No.4
Java&Spring記事人気No4
Python
Pythonのクロージャー(Closure)とは?関数内関数とnonlocalの活用
No.5
Java&Spring記事人気No5
Python
Pythonでリストを分割する方法(スライス / split() / itertools)
No.6
Java&Spring記事人気No6
Python
Pythonで経過時間を測る方法をやさしく解説!初心者向けtime.perf_counterとtime.sleepの使い方
No.7
Java&Spring記事人気No7
PHP
PHPの認証機能を実装する方法!初心者でもわかるログイン・ログアウト処理の基本
No.8
Java&Spring記事人気No8
Python
Pythonのstartswith()・endswith()の使い方!文字列の前後をチェック