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

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

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

目次

datetimeモジュールとは?

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

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

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

オブジェクト名説明
datetime.datetime日付と時刻を扱う
datetime.date日付を扱う
datetime.time時刻を扱う
datetime.timedelta日付・時刻の計算に使用

日付・時刻型を扱う: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

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_today.time())

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

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

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

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

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

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

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

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

timedeltaのコンストラクタ説明
days=日にちを進める。負の整数で日にちを戻す
seconds=秒数を進める。負の整数で秒数を戻す
microseconds=マイクロ秒数を進める。負の整数でマイクロ秒数を戻す
milliseconds=ミリ秒数を進める。負の整数でミリ秒数を戻す
minutes=分を進める。負の整数で分を戻す
hours=時間を進める。負の整数で時間を戻す
weeks=週数を進める。負の整数で週数を戻す

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

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の絵本 Pythonを楽しく学ぶ9つの扉posted with ヨメレバ

株式会社アンク 翔泳社 2018-02-16

Amazonで探す

Kindleで探す

楽天ブックスで探す

楽天koboで探す

7netで探す

hontoで探す

e-honで探す

紀伊國屋書店で探す

  • システム開発、アプリ開発
  • マッチングアプリ開発
  • インフラ構築支援等、なんでもご相談ください。
よかったらシェアしてね!
  • URLをコピーしました!
目次