Easy japanese era tool
Powered by Yamato Nagata
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.Eraobject
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 fordatetime.dateera: instance ofjapanera.Era. If not provided, find byjapanera.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 stringformat: format.allow_date_after_end_of_era: IfTrue, allow date after end of era. For example, ifallow_date_after_end_of_eraisTrue,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 ofdatetime.dateera: instance ofjapanera.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 ofdatetime.dateeras: list ofjapanera.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.Eraobject
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 fordatetime.datetimeera: instance ofjapanera.Era. If not provided, find byjapanera.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 ofdatetime.datetimeera: instance ofjapanera.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 ofdatetime.datetimeeras: list ofjapanera.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.JIMYOUINorEraType.DAIKAKUJI.EraType.COMMONis 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 ofdatetime.dateordatetime.datetimeformat: 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 stringformat: 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!!
Metadata
Release files for japanera 2.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| japanera-2.1.3.tar.gz | 20.0 kB | Without provenance | Details for japanera-2.1.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| japanera-2.1.3-py3-none-any.whl | Python 3 | none | any | Details for japanera-2.1.3-py3-none-any.whl |
Total release size: 40.9 kB
Release files / japanera-2.1.3.tar.gz
| Download URL | japanera-2.1.3.tar.gz |
|---|---|
| Size | 20.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a54e1f50a66fd1a2a110a357e155e93f2cf6df7de9927d966f9f6bd2ad2c1738
|
|
BLAKE2b-256 checksum How to use checksums |
231fc51a13c2c65e56cac83935ea3327f12fbbfbc0019710fd3f5fe598ac7129
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.5.15
|
Release files / japanera-2.1.3-py3-none-any.whl
| Download URL | japanera-2.1.3-py3-none-any.whl |
|---|---|
| Size | 21.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bc3ccadd1b6ef91732f2bf1ef74d240a28c3f7697fa0682283c7b84751352ccd
|
|
BLAKE2b-256 checksum How to use checksums |
ef31380d24ada9c81bb2abf5a963a2c94b90cc89f8afef9a729bbb592f094341
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.5.15
|
Security for japanera 2.1.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.