これは古い質問ですが、同じ質問があり、次のような日付を処理するように設計されたdatautil を発表するこの記事を見つけました。
- 紀元前/紀元前の日付を含む遠い過去および未来の日付
- さまざまな形式の日付: 1890 年 1 月、1890 年 1 月、1890 年 12 月 1 日、1890 年春など
- さまざまな精度の日付: 例: 1890、1890-01 (つまり、1890 年 1 月)、1890-01-02
- 不正確な日付: c1890, 1890?, fl 1890 など
インストールはただ
pip install datautil
これまでのところほんの数分間だけ調べましたが、引数として str を受け入れず (Unicode のみ)、独自の日付クラス (Flexidate、「ISO8601 のわずかに拡張されたバージョン」) を実装していることに注意しました。役に立つかもしれません。
>>> from datautil.date import parse
>>> parse('Jan 1890')
error: 'str' object has no attribute 'read'
>>> fd = parse(u'Jan 1890')
<class 'datautil.date.FlexiDate'> 1890-01
fd.as_datetime()
>>> datetime.datetime(1890, 1, 1, 0, 0)
>>> bc = parse(u'2000BC')
<class 'datautil.date.FlexiDate'> -2000
しかし悲しいかな...
>>> bc.as_datetime()
ValueError: year is out of range
残念ながら、「 circa」 (c.、ca、ca.、circ. または cca.) で日付を処理できるものを探していました。
>>> ca = parse(u'ca 1900')
<class 'datautil.date.FlexiDate'> [UNPARSED: ca 1900]
まあ、いつでもプルリクエストを送信できると思います;-)