日本には独自の年号(元号)制度があり、昭和、平成、令和といった元号で日付を表すことが多くあります。歴史的な資料や公的な書類に和暦が使われている場合が多いため、西暦と和暦の相互変換が必要になる場面がたびたび訪れます。今回は、Pythonを使ってこの変換を簡単に行えるプログラムを紹介します。
この記事で解説する内容
- Pythonで和暦から西暦に変換する方法
- Pythonで西暦から和暦に変換する方法
- 和暦と西暦の相互変換に役立つコード解説
- プログラムを利用するための実践的な例
それでは、さっそくコードの詳細と手順について見ていきましょう。
和暦から西暦への変換
まず、昭和、平成、令和を使って表記された日付を西暦に変換する方法を解説します。この例では、S52-1-1
(昭和52年1月1日)という和暦表記の日付を入力し、1977年1月1日
と西暦に変換するプログラムを作成しました。
和暦から西暦への変換コード
以下のコードを使うことで、和暦を西暦に変換することができます。元号の略称(S, H, R)と年数を入力として受け取り、それに基づいて正しい西暦を出力します。
def convert_japanese_date(japanese_date):
era_dict = {
'S': 1925, # 昭和元年は1926年
'H': 1988, # 平成元年は1989年
'R': 2018 # 令和元年は2019年
}
era, year, month, day = japanese_date[0], int(japanese_date[1:3]), int(japanese_date[4:5]), int(japanese_date[6:])
if era in era_dict:
# 各元号の開始年に和暦の年数を加算
western_year = era_dict[era] + year
print(f"{western_year}年{month}月{day}日")
else:
print("対応していない元号です")
# テスト
convert_japanese_date("S52-1-1")
コード解説
era_dict
: それぞれの元号の開始年を定義する辞書。昭和(1925年)、平成(1988年)、令和(2018年)としています。- 各元号の計算方法: 和暦から西暦に変換するために、元号の開始年に和暦年を加算します。
S52-1-1
の例: 昭和52年は1925 + 52 = 1977と計算されるため、1977年1月1日
と出力されます。
このようにシンプルなコードで和暦を西暦に変換することが可能です。
西暦から和暦への変換
続いて、西暦から和暦に変換する方法です。この方法では、1977年1月1日という西暦を入力し、昭和52年1月1日といった和暦表記に変換することができます。
西暦から和暦への変換コード
以下のコードを使うことで、西暦を和暦に変換することが可能です。年号を特定し、その年号内での年数を計算して出力します。
def convert_to_japanese_era(year, month, day):
if 1926 <= year <= 1988:
era = "昭和"
japanese_year = year - 1925
elif 1989 <= year <= 2018:
era = "平成"
japanese_year = year - 1988
elif 2019 <= year:
era = "令和"
japanese_year = year - 2018
else:
return "対応していない年です"
# 和暦の年が1年の場合は「元年」と表示
japanese_year_str = "元" if japanese_year == 1 else str(japanese_year)
return f"{era}{japanese_year_str}年{month}月{day}日"
# テスト
print(convert_to_japanese_era(1977, 1, 1))
コード解説
- 年号ごとの年範囲のチェック: 各年号の開始年と終了年をチェックし、その範囲に基づいて年号を設定します。
- 和暦年の計算: 各年号の開始年を基準に西暦年からの差を計算し、その結果を和暦年とします。
- 元年の処理: 和暦年が1年の場合は「元年」と表記されます。
このプログラムの実用例
このコードを活用することで、歴史的な資料を扱う場面や、公的な書類を処理する際に和暦と西暦を容易に相互変換できます。また、日本の企業でシステム開発を行う場合や、官公庁のデータを取り扱う場面でも役立つでしょう。
まとめ
和暦と西暦の変換は、日本においてビジネスや日常生活で役立つスキルです。Pythonを用いた今回のプログラムは、元号の特性を考慮して簡単に相互変換ができるよう工夫されています。ぜひこの記事で紹介したコードを活用し、和暦と西暦の変換を効率的に行ってみてください。
コメント