【Python】datetime 日付型と時間型の操作

時系列データの扱い、将来のデータ予測とその予測結果のプロット時に対応する日付を用意するためなどに日付、時間の操作は必須である。

それを取り扱うライブラリがdatetimeである。

日付型・時間型操作の基礎

・今日の年月日、日時の表示方法

from datetime import data, datetime

date.today() # -> datetime.date(2021, 5, 1)
datetime.now() # -> datetime.datetime(2021, 5, 1, 3, 16, 8, 15985)

・pandas Timestampと日時操作

DatetimeIndexを持つpandas DataFrameがあるとする。
(pandas-datareaderで経済指標を取得したときなどがこれにあたる)

""" 使用するIndexの内容
DatetimeIndex(['1990-01-03', '1990-01-04', '1990-01-05', '1990-01-06',
               ...
               '2021-04-24', '2021-04-25', '2021-04-26', '2021-04-27',
               '2021-04-28', '2021-04-29'],
               dtype='datetime64[ns]', name='Date', length=11440, freq='D')
"""
# 最終日付の取得
day = datetime.fromtimestamp(datetime.timestamp(df.index[-1]))
# -> datetime.datetime(2021, 4, 29, 0, 0)

day.strftime('%Y-%m-%d')
# -> '2021-04-29'

.strftime()は、指定の文字列に変更するために使う。

日・時間差を日時生成

datetime.timedeltaを使うことで、時間、日、週などの差を指定し、日時を指定することができる。

↓の例では今日の三十日後と1週間後(7日後)の日付を返す。

from datetime import timedelta, date

today = date.today()

day30 = today + timedelta(days=30)
week1 = today + timedelta(weeks=1)

timedelataの引数には他にも、seconds、microseconds、milliseconds、minutes、hoursといった時間を指定するものもある。

ただ、短期取引の分析などをしない限りには運用戦略を考える上では、daysでの指定だけ覚えておけば問題ないように思われる。