1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonで和暦⇔西暦変換 — 「令和元年」「漢数字」「R8.7.2」の表記ゆれまで面倒みる

1
Last updated at Posted at 2026-07-02

和暦変換、地味に面倒じゃないですか

Pythonで和暦を扱おうとすると、だいたいこのあたりで詰まります。

  • datetime.strftime には元号がない(ロケール頼みは環境依存でつらい)
  • 令和1年ではなく「令和元年」と表記したい
  • 帳票やユーザー入力には「R8.7.2」「令和八年七月二日」「R8年7月2日」みたいな表記が平気で混ざってくる
  • このためだけに重い依存関係を増やしたくない

自作ライブラリ flaretoolwareki モジュールはこれを全部カバーしています。内部は標準ライブラリのみ(依存ゼロ) で、Python 3.12以降で動作します。

pip install flaretool

西暦 → 和暦: to_wareki

from flaretool import wareki

print(wareki.to_wareki("2026-07-02"))  # 令和8年7月2日
print(wareki.to_wareki("2019-05-01"))  # 令和元年5月1日(元年表記がデフォルト)

# formatで自由に整形できる
print(wareki.to_wareki("2026-07-02", format="{era_short}{year}.{month}.{day}"))
# R8.7.2
print(wareki.to_wareki("2026-07-02", format="{era}{year_kanji}年{month_kanji}月{day_kanji}日"))
# 令和八年七月二日

# 「元年」ではなく「1年」にしたい場合
print(wareki.to_wareki("2019-05-01", gannen=False))  # 令和1年5月1日

引数は date / datetime / 文字列("2026/07/02""2026年7月2日"、全角数字もOK)を受け付けます。

和暦 → 西暦: to_seireki

こちらが本領です。表記ゆれをまとめてパースできます。

from flaretool import wareki

print(wareki.to_seireki("令和8年7月2日"))      # 2026-07-02
print(wareki.to_seireki("R8.7.2"))             # 2026-07-02
print(wareki.to_seireki("令和元年5月1日"))      # 2019-05-01
print(wareki.to_seireki("令和八年七月二日"))    # 2026-07-02(漢数字)
print(wareki.to_seireki("R8年7月2日"))      # 2026-07-02(全角)
print(wareki.to_seireki("H31.4.30"))           # 2019-04-30

R8/7/2R8-7-2Reiwa 8-7-2 のような区切りやローマ字表記にも対応します。解釈できない文字列や、元号の期間外の日付(昭和65年1月1日 など)は ValueError になるので、入力チェックにもそのまま使えます。

おまけ: 元号と年度

from flaretool import wareki

print(wareki.get_era("2019-04-30").name)     # 平成
print(wareki.today_wareki())                 # 令和8年7月2日(実行日による)

# 日本の会計年度(4月始まり。start_monthで変更可)
print(wareki.get_fiscal_year("2026-03-31"))  # 2025
print(wareki.get_fiscal_year("2026-04-01"))  # 2026

フォーマットのプレースホルダ一覧

プレースホルダ
{era} 令和
{era_short} R
{era_romaji} Reiwa
{year} 8(gannen=True で1年目は「元」)
{year_kanji}
{month} / {month_kanji} 7 / 七
{day} / {day_kanji} 2 / 二

信頼できる理由

  • 依存ライブラリゼロ: 標準ライブラリのみで実装。flaretool自体を入れても和暦のためだけの追加依存はありません
  • 改元の境界日をテスト済み: 明治→大正(1912/7/29→30)、大正→昭和(1926/12/24→25)、昭和→平成(1989/1/7→8)、平成→令和(2019/4/30→5/1)の前後を自動テストで検証しています
print(wareki.to_wareki("1989-01-07"))  # 昭和64年1月7日
print(wareki.to_wareki("1989-01-08"))  # 平成元年1月8日

CLIも入っているのでシェルからも使えます。

$ flaretool wareki 2026-07-02
令和8年7月2日
$ flaretool seireki R8.7.2
2026-07-02

おわりに

flaretoolには和暦以外にも、内閣府データと照合済みの祝日判定・営業日計算flaretool holiday / flaretool business)などが入っています。よければあわせてどうぞ。

不具合や要望は GitHub Issue までお気軽に!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?