Python プログラミング

[Python] datetimeモジュールで日付型・時刻型を扱う

2018年7月8日

こんにちは!シミダイ(@shimidai2100)です。

Pythonで日付型・時間型を扱うための「datetime」モジュールを紹介します。

「datetime」モジュールを使用すれば、時刻情報の取得だけでなく、時刻データの計算も簡単にできるようになります。


datetimeモジュールとは?

datetime」モジュールとは、Python内の標準ライブラリで日付や時刻のデータを簡単に扱うことができます。

また「datetime」モジュールでは四則演算もサポートしています。

datetimeモジュールでは以下のオブジェクトができ、これらを覚えておけば問題ないでしょうか。

[table id=55 /]

日付・時刻型を扱う:datetimeオブジェクト

現在の日付型と時刻型を同時に扱うには「datetime」オブジェクトを使用することをオススメします。

紛らわしいですが、「datetime」モジュールの「datetime」オブジェクトなので注意してください。

また現在日付・時刻を取得するのは

  • now()」メソッド
  • today()」メソッド

を使用します。下の要に使用します。

import datetime

dt_now = datetime.datetime.now()
dt_today = datetime.datetime.today()

下がサンプルになります。

import datetime

if __name__ == '__main__':
    dt = datetime.datetime.now()

    # datetimeオブジェクト
    print(dt)
    # 年
    print(dt.year)
    # 月
    print(dt.month)
    # 日
    print(dt.day)
    # 時
    print(dt.hour)
    # 分
    print(dt.minute)
    # 秒
    print(dt.second)
    # マイクロ秒
    print(dt.microsecond)

出力結果は以下になります。

2018-07-07 11:33:57.430497
2018
7
7
11
33
57
430497

「datetime」オブジェクトの各属性で年月日と現在時刻も表示することができます。

日付型を扱う:dateオブジェクト

日付型を扱うには「date」オブジェクトを使用することをオススメします。

現在日付を取得するのは「today()」メソッドを使用します。

import datetime

date_now = datetime.date.today()

下がサンプルになります。

import datetime

if __name__ == '__main__':
    date_now = datetime.date.today()
    print(date_now)
    # 年
    print(date_now.year)
    # 月
    print(date_now.month)
    # 日
    print(date_now.day)

出力結果は以下になります。

2018-07-07
2018
7
7

ちなみに「datetime」オブジェクトもインスタンスメソッドを使用することで、

「date」オブジェクトに変換することができます。

import datetime

if __name__ == '__main__':
    dt = datetime.datetime.now()
    # date()インスタンスメソッド
   print(dt.date())

時刻を扱う:timeオブジェクト

時刻を扱うには「time」オブジェクトを使用出来ます。

現在の時刻は「time」オブジェクトでは取得できませんので注意してください。

下がサンプルになります。

import datetime

if __name__ == '__main__':
    time_now = datetime.time(hour=22, minute=30, second=15, microsecond=555)
    print(time_now)
    # 時
    print(time_now.hour)
    # 日
    print(time_now.minute)
    # 分
    print(time_now.second)
    # マイクロ秒
    print(time_now.microsecond)

出力結果は以下になります。

22:30:15.000555
22
30
15
555

ちなみに「datetime」オブジェクトもインスタンスメソッドを使用することで、

「time」オブジェクトに変換することができます。

import datetime

if __name__ == '__main__':
    dt_today = datetime.datetime.today()

    # time()インスタンスメソッド
    print(dt.time())

時刻・日付で計算:timedeltaオブジェクト

日付・時刻を計算するに「timedelta」オブジェクトを使用出来ます。

「timedalta」を使用することで、

  • ○○日後
  • ○○年前
  • ○○時間経過

といったような計算を行うことができます。

「timedelta」は以下のように使用します。

import datetime
timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

以下指定方法です。すべて整数で指定します。

[table id=56 /]

下がサンプルになります。

import datetime

if __name__ == '__main__':
    # 7日前と7日後を計算
    dt_now = datetime.datetime.now()
    before_7days = dt_now + datetime.timedelta(days=-7)
    after_7days = dt_now + datetime.timedelta(days=7)
    print(dt_now)
    print(after_7days)
    print(before_7days)

    # 2000年からどれだけの何日経過したか計算
    dt_2000year = datetime.date(year=2000, month=12, day=31)
    print(dt_2000year)
    duration = dt_now.date() - dt_2000year
    print(duration.days)

出力結果は以下になります。

2018-07-07 13:01:52.313777
2018-07-14 13:01:52.313777
2018-06-30 13:01:52.313777
2000-12-31
6397

 

関連記事

-Python, プログラミング

Copyright© shimidai2100 , 2020 All Rights Reserved.