Skip to content

Instantly share code, notes, and snippets.

@nakanoasaservice
Last active February 11, 2021 19:15
Show Gist options
  • Select an option

  • Save nakanoasaservice/4d1dee0aeb9ef41741c1ca72ce51646a to your computer and use it in GitHub Desktop.

Select an option

Save nakanoasaservice/4d1dee0aeb9ef41741c1ca72ce51646a to your computer and use it in GitHub Desktop.
Pythonで西暦から和暦への変換
from datetime import date, datetime
WAREKI = [
(date(1989,1,8), date(2019,4,30), "平成"),
(date(2019,5,1), date.max, "令和"),
]
def seireki2wareki(target: str) -> str:
try:
target = datetime.strptime(target, "%Y-%m-%d").date()
except ValueError:
raise ValueError(f"invalid date: {target}")
for start, end, gengo in WAREKI:
if not start <= target <= end:
continue
year = target.year - start.year + 1
if year == 1:
year = "元"
return f"{gengo}{year}年{target.month}月{target.day}日"
raise ValueError(f"date is too old or new: {target}")
print(seireki2wareki("1999-03-12"))
print(seireki2wareki("2020-01-24"))
print(seireki2wareki("1998-02-01"))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment