datetime

datetimeモジュールは標準ライブラリー(最初からインストールされているライブラリー)です。 含まれるオブジェクトは以下です。

  • date: 年月日の日付を扱う
  • time: 時分秒、マイクロミリ秒の時刻を扱う
  • datetime: 日付、時刻の両方を扱う
  • timedelta: 日付、時刻の間隔を扱う

datetime.datetime

  • datetimeオブジェクトをPython中で利用するには、from datetime import datetimeと記述します。
  • datetimeオブジェクトのnow()は現在のローカルな日付および時刻を返します。
from datetime import datetime
now = datetime.now()
print(now)  # 2016-07-25 09:34:30.787157
print(now.year)  # 2016
print(now.month)  # 7
print(now.day)  # 25
print(now.hour)  # 9
print(now.minute)  # 34
print(now.second)  # 30
  • datetimeオブジェクトに初期値を指定し、ある特定の日時のオブジェクトを作れます。
  • datetime(年, 月, 日, 時, 分, 秒)と指定できます。時分秒を省略すると00:00:00となります。
# 2016-01-31 10:20:30
one_day = datetime(2016, 1, 31, 10, 20, 30)

strftime()

datetimeオブジェクトの表示をstrftime(フォーマット)を利用して変更できます。 フォーマットは文字列中にフォーマット記号を指定し、合わせてその他の文字列も指定します。

代表的なフォーマット記号は以下です。

  • %Y: 西暦(4桁)の10進表記を表します。
  • %m: 0埋めした10進数で表記した月。
  • %d: 0埋めした10進数で表記した月中の日にち。
  • %H: 0埋めした10進数で表記した時(24時間表記)。
  • %M: 0埋めした10進数で表記した分。
  • %S: 0埋めした10進数で表記した秒。
print(now.strftime('%Y/%m/%d'))  # -> 2016/01/10
print(now.strftime('%Y-%m-%d'))  # -> 2016-01-10
print(now.strftime('%H:%M:%S'))  # -> 09:30:15

詳しくは、公式ドキュメントの8.1.8. strftime() と strptime() の振る舞いを参照ください。

strptime()

datetime.strptime(時刻を表す文字列, フォーマット)を利用することにより、時刻を表す文字列フォーマットと同じ値が含まれている文字列であると判断し、datetimeオブジェクトを作成します。

from datetime import datetime

str_day = '2016/01/15 09:15:31'
one_day = datetime.strptime(str_day, '%Y/%m/%d %H:%M:%S')
print(one_day)  # -> 2016-01-15 09:15:31

str_date = '2016年12月31日'
one_day = datetime.strptime(str_date, '%Y年%m月%d日')
print(one_day)  # -> 2016-12-31 00:00:00

詳しくは、公式ドキュメントの8.1.8. strftime() と strptime() の振る舞いを参照ください。

timedelta

timedeltaは日付や時間の計算に使います。 timedelta(days=3)は3日分を表します。nowに足すと3日後、引くと3日前になります。

from datetime import timedelta
before_3days = now - timedelta(days=3) # 3日前
after_3days = now + timedelta(days=3) # 3日後

さらに詳しく学ぶには、8.1.2. timedelta オブジェクトを参照ください。