和暦変換ライブラリ DatetimeJp
概要
DatetimeJp は西暦と和暦の変換処理を提供します。
主な機能として、次のような拡張機能を実装しています。
- 和暦表示の文字列を構文解析し、datetime.datetime のサブクラスオブジェクトを生成する。
- 西暦の日付情報を入力して和暦変換オブジェクトを生成し、和暦表示の文字列を出力する。
加えて、本ライブラリは標準ライブラリ datetime の datetime クラスを継承した構成となっており、datetime と同様の日付操作を行うことが可能です。
利用方法
本ライブラリの主な機能は datetime クラスの strptime 関数および strptime 関数を拡張する形で提供されています。これらの関数で拡張された書式化指定子は次のとおりです。
書式化指定子 | 意味 | 使用例 |
---|
%g | 元号を日本語表記で表示します。 | 明治, 大正, 昭和, 平成, 令和 |
%-g, %#g | 元号を1文字のローマ字表記で表示します。 | M, T, S, H, R |
%e | 0埋めした10進数で表記した年度を表します。 | 01, 02, ..., 99 |
%-e, %#e | 0埋めしない10進数で表記した年度を表します。 | 1, 2, ..., 99 |
%-a, %#a | 日本語表記の曜日を表します。 | 日, 月, 火, 水, 木, 金, 土 |
本ライブラリで提供する拡張機能の他に、標準ライブラリ datetime で指定可能な書式化指定子を使用できます。
詳細は公式ドキュメント
「strftime() と strptime() の書式コード」
を参照してください。
サンプルコード
西暦から和暦への変換
以下の例では西暦2020年2月2日の日付オブジェクトを生成し、'令和02年02月02日'という文字情報に変換します。
from datetimejp import JDate
jd = JDate(2020,2,2)
result = jd.strftime('%g%e年%m月%d日')
print(result) # -> '令和02年02月02日'
和暦から西暦への変換
以下の例では'令和1年5月1日'という文字情報を解析して日付オブジェクトを生成します。
その後、'20190501' という文字列に変換します。
from datetimejp import JDate
jd = JDate.strptime('令和1年5月1日', '%g%e年%m月%d日')
result = jd.strftime('%Y%m%d')
print(result) # -> '20190501'
注意点
本ライブラリには過去の和暦情報が保持されています。
改元が行われた際には和暦の情報が古くなり、新しい元号の情報を追加する必要があります。
また、本ライブラリが保持している最も古い和暦情報は明治1年(西暦1868年)となっており、それ以前の和暦変換には対応していません。
ライセンス
MIT License
Copyright (c) 2023 宇宮間そら
以下に定める条件に従い、本ソフトウェアおよび関連文書のファイル(以下「ソフトウェア」)の複製を取得するすべての人に対し、ソフトウェアを無制限に扱うことを無償で許可します。これには、ソフトウェアの複製を使用、複写、変更、結合、掲載、頒布、サブライセンス、および/または販売する権利、およびソフトウェアを提供する相手に同じことを許可する権利も無制限に含まれます。
上記の著作権表示および本許諾表示を、ソフトウェアのすべての複製または重要な部分に記載するものとします。
ソフトウェアは「現状のまま」で、明示であるか暗黙であるかを問わず、何らの保証もなく提供されます。ここでいう保証とは、商品性、特定の目的への適合性、および権利非侵害についての保証も含みますが、それに限定されるものではありません。 作者または著作権者は、契約行為、不法行為、またはそれ以外であろうと、ソフトウェアに起因または関連し、あるいはソフトウェアの使用またはその他の扱いによって生じる一切の請求、損害、その他の義務について何らの責任も負わないものとします。
This software is released under the MIT License.
http://opensource.org/licenses/mit-license.php