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 オブジェクトを参照ください。