Skip to main content

Easy japanese era tool

Project description

Easy japanese era tool

Powered by Yamato Nagata

GitHub ReadTheDocs

All Information's source is Wikipedia Page

>>> from datetime import date
>>> from japanera import EraDate

>>> today = EraDate.from_date(date.today())
>>> date(2020, 4, 16) in today.era
True

>>> "Current Japanese Era is <{}>: <{}>".format(today.era.kanji, today.era.english)
Current Japanese Era is <令和>: <Reiwa>

>>> "Current Date is <{}>".format(today.strftime("%-K%-y年%m月%d日"))
Current Date is <令和05年03月07日>

Installation

Install with pip

 $ pip install japanera

How to Use

You can use Era, EraDate, EraDateTime.

from datetime import date, datetime
from japanera import EraDate, EraDateTime, Era

print(EraDate(2023, 1, 1))
# 令和05年 01月01日
print(EraDate(2019, 4, 30))  # automatically detect border of Era
# 平成31年 04月30日
print(EraDate(2019, 5, 1))
# 令和01年 05月01日

print(EraDate.strptime("平成三十一年四月十九日", "%-K%-n年%-m月%-d日"))
# [EraDate(2019, 4, 19, Era('平成', 'Heisei', datetime.date(1989, 1, 8), datetime.date(2019, 5, 1), <EraType.GENERAL: 'general'>))]

print(EraDate.strptime("昭和25年05月01日", "%-K%-y年%m月%d日"))
# [EraDate(1950, 5, 1, Era('昭和', 'Shouwa', datetime.date(1926, 12, 25), datetime.date(1989, 1, 8), <EraType.GENERAL: 'general'>))]

era_of_1950_1_1: Era = EraDate(1950, 1, 1).era

print(era_of_1950_1_1.kanji)  # 昭和
print(era_of_1950_1_1.english)  # Shouwa
print(era_of_1950_1_1.english_vowel_shortened)  # Showa
print(era_of_1950_1_1.english_head)  # S
print(era_of_1950_1_1.since)  # datetime.date(1926, 12, 25)
print(era_of_1950_1_1.until)  # datetime.date(1989, 1, 8)
print(date(1950, 1, 1) in era_of_1950_1_1)  # True
print(date(1926, 12, 25) in era_of_1950_1_1)  # True
print(date(1989, 1, 8) in era_of_1950_1_1)  # False
print(era_of_1950_1_1.strftime(date(1950, 5, 1), "%-K%-y年 %m月%d日"))  # 昭和25年05月01日
print(era_of_1950_1_1.strftime(date(1950, 5, 1), "%-K%-n年 %-m月%-d日"))  # 昭和二十五年 五月一日
print(era_of_1950_1_1.strftime(date(1926, 12, 25), "%-K%-n年 %-m月%-d日"))  # 昭和元年 十二月二十五日  # 元 for 1st year
print(repr(era_of_1950_1_1.strptime("昭和25年05月01日", "%-K%-y年%m月%d日")))
# EraDatetime(1950, 5, 1, 0, 0, 0, 0, None, Era('昭和', 'Shouwa', datetime.date(1926, 12, 25), datetime.date(1989, 1, 8), <EraType.GENERAL: 'general'>))

era_date = EraDate(1420, 5, 6)
# or EraDate.from_date(date(1420, 5, 6))
print(era_date.era.kanji)  # 応永
print(era_date.strftime("%-K(%-E)%-Y年%m月%d日"))  # 応永(Ouei)27年05月06日

era_datetime = EraDateTime(1420, 5, 6, 12)
# or EraDateTime.from_datetime(datetime(1420, 5, 6, 12))
print(era_datetime.era.kanji)  # 応永
print(era_datetime.strftime("%-K(%-e)%-Y年%m月%d日(%-a) %H時"))  # 応永(Oei)27年05月06日(土) 12時

Documentation

Additional format codes

Directive Meaning Example
%-K Era's name in Kanji 令和, 平成, 昭和, e.t.c.
%-E Era's name in English Reiwa, Heisei, Shouwa, e.t.c.
%-e Era's name in English but redundant vowels(ou, ei) are shortened. e.g. 'Shouwa' -> 'Showa'. Reiwa, Heisei, Showa, e.t.c.
%-h Head of Era's name in English. R, H, S, e.t.c.
%-n Relative year to beginning of Era in Kanji. parse '元' as 1. Up to 99. 元, 二, ..., 九十九,
%-N Relative year to beginning of Era in Kanji. parse '元' as 1. Up to 9999. 元, 二, ..., 九千九百九十九
%-y Relative year to beginning of Era in Arabic number. parse '元' as 1. Up to 99. 元, 2, ..., 99,
%-Y Relative year to beginning of Era in Arabic number. parse '元' as 1. Up to 9999. 元, 2, ..., 9999
%-m Month of the date in Kanji. 一, 二, ..., 十二
%-d Day of the date in Kanji. 一, 二, ..., 三十一
%-a Weekday of the date in Kanji. 月, 火, 水, 木, 金, 土, 日

EraDate(datetime.date)

properties

  • instance.era: japanera.Era object

and members inherited from datetime.date

EraDate(year: int, month: Optional[int]=None, day: Optional[int]=None, era: Era=None)

  • year, month, day: All must be acceptable value for datetime.date
  • era: instance of japanera.Era. If not provided, find by japanera.parser.find_era_and_date(absolute_year=year, month=month, day=day)

If multiple Era are available, The one starting latest is used. If no Japanese Era is found, use Common Era(西暦). Return japanera.EraDate object.

EraDate().strftime(format: str)

  • format: format.

Directives above and datetime.date.strftime directives are available.

Return str

EraDate.strptime(date_string: str, format: str, allow_date_after_end_of_era: bool=False)

  • date_string: date string
  • format: format.
  • allow_date_after_end_of_era: If True, allow date after end of era. For example, if allow_date_after_end_of_era is True, EraDate().strftime("昭和99年01月01日", "%-K%-y年%m月%d日") will be valid although Showa is only 64 years long.

Directives above and datetime.date.strftime directives are available. Return list of EraDate for earliest date in every possible Era.

EraDate.from_date(dt: datetime.date, era: Optional[Era]=None)

  • dt: instance of datetime.date
  • era: instance of japanera.Era

Return EraData(year=dt.year, month=dt.month, day=dt.day, era=era)

EraDate.list_from_date(dt: datetime.date, eras: Optional[List[Era]]=[])

  • dt: instance of datetime.date
  • eras: list of japanera.Era

Return EraData(year=dt.year, month=dt.month, day=dt.day, era=era) for every era in eras. If eras is empty, return EraData(year=dt.year, month=dt.month, day=dt.day, era=era) for every era that includes provided date.

EraDate().to_date()

Return datetime.date object have same time information

EraDateTime(EraDate, datetime.datetime)

properties

  • instance.era: japanera.Era object

and members inherited from datetime.datetime

EraDateTime(year: int, month: Optional[int]=None, day: Optional[int]=None, hour: int=0, minute: int=0, second: int=0, microsecond: int=0, tzinfo: Optional[datetime.tzinfo]=None, *, fold: int=0, era: Optional[Era]=None)

  • year, month, day, hour, minute, second, microsecond, tzinfo, fold: All must be acceptable value for datetime.datetime
  • era: instance of japanera.Era. If not provided, find by japanera.parser.find_era_and_date(absolute_year=year, month=month, day=day)

Return japanera.EraDateTime object.

EraDateTime().strftime(format: str)

  • format: format.

same as EraDate().strftime(format)

EraDate().from_datetime(dtt: datetime.datetime, era: Optional[Era]=None)

  • dtt: instance of datetime.datetime
  • era: instance of japanera.Era

Return EraDateTime(year=dtt.year, month=dtt.month, day=dtt.day, hour=dtt.hour, minute=dtt.minute, second=dtt.second, microsecond=dtt.microsecond, tzinfo=dtt.tzinfo, fold=dtt.fold, era=era)

EraDateTime.list_from_datetime(dtt: datetime.datetime, eras: Optional[List[Era]]=None)

  • dtt: instance of datetime.datetime
  • eras: list of japanera.Era

Return EraDateTime(year=dtt.year, month=dtt.month, day=dtt.day, hour=dtt.hour, minute=dtt.minute, second=dtt.second, microsecond=dtt.microsecond, tzinfo=dtt.tzinfo, fold=dtt.fold, era=era) for every era in eras. If eras is empty, return EraDateTime(year=dtt.year, month=dtt.month, day=dtt.day, hour=dtt.hour, minute=dtt.minute, second=dtt.second, microsecond=dtt.microsecond, tzinfo=dtt.tzinfo, fold=dtt.fold, era=era) for every era that includes provided datetime.

EraDateTime().to_datetime()

Return datetime.datetime object have same time information

Era(kanji, english, since, until, era_type)

  • kanji - str: kanji letter of era. e.g. "大正"
  • english - str: english letter of pronunciation of era. e.g. "Taishou"
  • since - datetime.date: start of the era. This day is included to this era.
  • until - datetime.date: end of the era. This day is excluded to this era.
  • era_type - japanera.EraType: Type of This Era. EraType.COMMON, EraType.GENERAL, EraType.JIMYOUIN or EraType.DAIKAKUJI. EraType.COMMON is a Western style common era.

Era().english_vowel_shortened -> str

Return self.english vowel shortened. exp. "Taishou" -> "Taisho"

Era().english_head -> str

Return the first letter of self.english

Era().relative_year_to_absolute_year(relative_year: int) -> int

Convert relative year to absolute year. e.g. Era("大正", "Taishou", datetime.date(1912, 7, 30), datetime.date(1926, 12, 25), EraType.GENERAL).relative_year_to_absolute_year(2) will be 1913

Era().absolute_year_to_relative_year(absolute_year: int) -> int

Convert absolute year to relative year. e.g. Era("大正", "Taishou", datetime.date(1912, 7, 30), datetime.date(1926, 12, 25), EraType.GENERAL).absolute_year_to_relative_year(1913) will be 2

Era().calc_absolute_year(dt: datetime.date) -> int

Return absolute year of dt in this era. e.g. Era("大正", "Taishou", datetime.date(1912, 7, 30), datetime.date(1926, 12, 25), EraType.GENERAL).calc_absolute_year(datetime.date(1913, 1, 1)) will be 2

Era().strftime(dtt: Union[datetime.date, datetime.datetime], format: str) -> str

  • dtt: instance of datetime.date or datetime.datetime
  • format: format.

return formatted string. e.g. Era("大正", "Taishou", datetime.date(1912, 7, 30), datetime.date(1926, 12, 25), EraType.GENERAL).strftime(datetime.date(1913, 1, 1), "%-K%-y年") will be "大正二年"

Era().strptime(date_string: str, format: str) -> EraDateTime

  • date_string: date string
  • format: format.

return EraDateTime object. e.g. Era("大正", "Taishou", datetime.date(1912, 7, 30), datetime.date(1926, 12, 25), EraType.GENERAL).strptime("大正二年", "%-K%-y年") will be EraDateTime(1913, 1, 1, era=Era("大正", "Taishou", datetime.date(1912, 7, 30), datetime.date(1926, 12, 25), EraType.GENERAL)) Even if date_string is after this era, EraDateTime object will be returned.

In End

Sorry for my poor English. I want you to join us and send many pull requests about Doc, code, features and more!!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

japanera-2.1.3.tar.gz (20.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

japanera-2.1.3-py3-none-any.whl (21.0 kB view details)

Uploaded Python 3

File details

Details for the file japanera-2.1.3.tar.gz.

File metadata

  • Download URL: japanera-2.1.3.tar.gz
  • Upload date:
  • Size: 20.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.15

File hashes

Hashes for japanera-2.1.3.tar.gz
Algorithm Hash digest
SHA256 a54e1f50a66fd1a2a110a357e155e93f2cf6df7de9927d966f9f6bd2ad2c1738
MD5 683801f8f37ef40c73042c8b23e3b171
BLAKE2b-256 231fc51a13c2c65e56cac83935ea3327f12fbbfbc0019710fd3f5fe598ac7129

See more details on using hashes here.

File details

Details for the file japanera-2.1.3-py3-none-any.whl.

File metadata

  • Download URL: japanera-2.1.3-py3-none-any.whl
  • Upload date:
  • Size: 21.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.15

File hashes

Hashes for japanera-2.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 bc3ccadd1b6ef91732f2bf1ef74d240a28c3f7697fa0682283c7b84751352ccd
MD5 266b27dd501e30856e46b2e071da00fd
BLAKE2b-256 ef31380d24ada9c81bb2abf5a963a2c94b90cc89f8afef9a729bbb592f094341

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page