令和になりました。
元号と西暦の変換するプログラムを書いてみました。
とりあえず書いただけなので、本当に組み込むときは、もうちょっときれいにしましょう。
元年と西暦の対応は下記の通り
元号 | 西暦(開始) | 西暦(終了) |
---|---|---|
明治 | 1868/10/23 | 1912/07/30 |
大正 | 1912/07/30 | 1926/12/25 |
昭和 | 1926/12/25 | 1989/01/07 |
平成 | 1989/01/08 | 2019/04/30 |
令和 | 2019/05/01 | – |
標準入力からYYYYMMDDで入れると変換した結果を標準出力に。
import datetime
import math
# 明治
meiji_start_date = 18681023
meiji_end_date = 19120730
# 大正
taisho_start_date = 19120730
taisho_end_date = 19261225
# 昭和
showa_start_date = 19261225
showa_end_date = 19890107
# 平成
heisei_start_date = 19890108
heisei_end_date = 20190430
# 令和
reiwa_start_date = 20190501
def check(target_date):
if target_date < meiji_start_date:
return "Error"
if target_date < meiji_end_date:
x = math.floor( target_date / 10000 ) - math.floor( meiji_start_date / 10000) + 1
return "Meiji " + str(x)
if target_date == meiji_end_date:
x = math.floor( target_date / 10000 ) - math.floor( meiji_start_date / 10000) + 1
return "Meiji " + str(x) + " and Taisho 1"
if target_date < taisho_end_date:
x = math.floor( target_date / 10000 ) - math.floor( taisho_start_date / 10000) + 1
return "Taisho " + str(x)
if target_date == taisho_end_date:
x = math.floor( target_date / 10000 ) - math.floor( taisho_start_date / 10000) + 1
return "Taisho " + str(x) + " and Showa 1"
if target_date <= showa_end_date:
x = math.floor( target_date / 10000 ) - math.floor( showa_start_date / 10000) + 1
return "Showa " + str(x)
if target_date <= heisei_end_date:
x = math.floor( target_date / 10000 ) - math.floor( heisei_start_date / 10000) + 1
return "Heisei " + str(x)
if target_date >= reiwa_start_date:
x = math.floor( target_date / 10000 ) - math.floor( reiwa_start_date / 10000) + 1
return "Reiwa " + str(x)
# 標準入力から日付を入力 yyyymmdd
input_date = int(input().strip())
print(check(input_date))