コンテンツにスキップ

クイックスタート

ja-timexで文字列を解析する

ja-timexからTimexParserクラスをインポートして、日付や時間が含まれている文字列を解析します。

from ja_timex import TimexParser

timex_parser = TimexParser()
timexes = timex_parser.parse("彼は2008年4月から週に3回ジョギングを1時間行ってきた")

解析結果はList[TIMEX]で得られます。

In []: timexes
Out[]:
[<TIMEX3 tid="t0" type="DATE" value="2008-04-XX" text="2008年4月">,
 <TIMEX3 tid="t1" type="SET" value="P1W" freq="3X" text="週に3回">,
 <TIMEX3 tid="t2" type="DURATION" value="PT1H" text="1時間">]

TIMEXを利用する

各要素のTIMEXクラスは、TIMEX3の仕様に従って規格化された時間情報表現のdataclassです。

In []: timex = timexes[0] 
# <TIMEX3 tid="t0" type="DATE" value="2008-04-XX" text="2008年4月">

In []: timex.type
Out[]: 'DATE'

In []: timex.value
Out[]: '2008-04-XX'

In []: timex.text
Out[]: '2008年4月'
In []: timex = timexes[1]
# <TIMEX3 tid="t1" type="SET" value="P1W" freq="3X" text="週に3回">

In []: timex.value
Out[]: 'P1W'

In []: timex.freq
Out[]: '3X'

In []: timex.text
Out[]: '週に3回'

仕様の詳細はTIMEX3タグの仕様を参照ください。

Pythonのdatetimeに変換する

日付表現は、TIMEXクラスからPythonのdatetimeオブジェクトに変換することができます。

In []: timex = timexes[0]
# <TIMEX3 tid="t0" type="DATE" value="2008-04-XX" text="2008年4月">

In []: timex.to_datetime()
Out[]: DateTime(2008, 4, 1, 0, 0, 0, tzinfo=Timezone('Asia/Tokyo'))

Pythonのtimedeltaに変換する

持続時間表現は、TIMEXクラスからPythonのtimedeltaオブジェクトに変換することができます。

In []: timex = timexes[2]
# <TIMEX3 tid="t2" type="DURATION" value="PT1H" text="1時間">

In []: timex.to_duration()
Out[]: Duration(hours=1)

通常のdatetime/timedeltaと同様に、計算が可能です。

In []: from datetime import datetime

In []: datetime(2021, 7, 18, 12, 30) - timex.to_duration()
Out[]: datetime.datetime(2021, 7, 18, 11, 30)