Python

経過時間の取り扱いを基本から解説(timedelta型)

スポンサーリンク


▶ 日付型の基本的な取り扱い方は以下の記事にまとめてあります。

はじめに

今回はtimedelta型について扱います。時系列データでは、datetime型の値をそのまま使わずに、ある基準の日時からの経過時間を扱うことがあります。そのような場合には、timedelta型のtotal_seconds()が有効です。

timedelta型

timedelta型はdatetimeオブジェクトの引き算で作られます。言葉で説明するよりもやってみた方が早いでしょう。まずはライブラリのインポートから始めましょう。

# ライブラリのインポート
import datetime

# datetimeオブジェクトの作成
dt1=dt.datetime(year=2010, month=9, day=26, hour=8)
dt2=dt.datetime(year=1974,month=10, day=7, hour=21)

dt1, dt2の2つのdatetimeオブジェクトを作りました。念のためデータ型をチェックしておきましょう。

# 型の確認
print(type(dt1))
print(type(dt2))

これらのdatetimeオブジェクトは日付(年、月、日)と時刻(時、分、秒、マイクロ秒)の両方の情報を持ちます。これらは属性year, month, day, hour, minute, second, microsecondでアクセスできます。また、date()メソッドにより日付に変換することができます。

print(dt1)
print(dt2)
# 日付の確認
dt1.date()
# 日付を取得
dt1.day

次にdt1とdt2の差分をとってみましょう。この差分をtdとします。このtdのデータ型はどうなるでしょうか?

td=dt1-dt2
print(type(td))

このようにdatetimeオブジェクトの差分をとると、timedelta型となります。timedeltaオブジェクトは日数、秒数、マイクロ秒数の情報を持ち、属性days, seconds, microsecondsでアクセスできます。また、total_seconds()メソッドでトータルの秒数に変換することができます。

td

days, seconds, microsecondsの属性をそれぞれ取得してみましょう。

td.days
td.seconds
td.microseconds

timedeltaオブジェクトは上記のように日数、秒、マイクロ秒の情報を持ちますが、トータルの秒数を取得したいときもあります。そのときにtotal_seconds()メソッドを利用できます。

td.total_seconds()
スポンサーリンク

まとめ

いかがでしたか?今回はtimedelta型を扱いました。日付の処理はいろいろとややこしいものもありますが、こうしてtimedeltaだけを取り出して整理してみると、簡単ですね。日時の処理としては以下の記事も参考にしてください。

▶ 海外にサーバーがあって、現地時間のデータとなっているものを日本時間に変換する場合はタイムゾーンを考慮すると便利です。タイムゾーンで扱うと、サマータイムも考慮されるので便利です。

コメント

タイトルとURLをコピーしました