pythonで日付操作あれこれ
最近Pythonをよく使用するのですが、言語によっては日付操作は非常に面倒(特にJSとかは…)なことがあり、Pythonではどうするのか、いろいろ調べてみました。
標準で利用可能なモジュール
import time from datetime import datetime # 本日の時刻 now = datetime.today() # datetime.datetime(2017, 5, 21, 12, 42, 28, 403222) now = datetime.now() # datetime.datetime(2017, 5, 21, 12, 42, 41, 546079) # 年 print(now.year) # 月 print(now.month) # 日 print(now.day) # 曜日(0: 月曜 ~ 6:日曜) print(now.weekday()) # 時 print(now.hour) # 分 print(now.minute) # 秒 print(now.second)
日時の計算
指定できるパラメータは、days
,seconds
, microseconds
,milliseconds
, minutes
, hours
,weeks
で
この関数の返り値とdatetime
オブジェクトを計算できる
from datetime import datetime, timedelta now = datetime.now() # 1日後 print(now + timedelta(days=1)) # 1日前 print(now - timedelta(days=1)) # 1週間後 print(now + timedelta(weeks=1)) # 1週間前 print(now - timedelta(weeks=1))
カレンダー
import calendar # カレンダーを出力する >>> calendar.prmonth(2017, 5) May 2017 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
日付拡張ライブラリ
datetimeを拡張したライブラリ
インストール
pip install python-dateutil
from datetime import datetime from dateutil import relativedelta now = datetime.now() # 1週間前 print(now - relativedelta.relativedelta(weeks=1)) # 今週頭 print(now - relativedelta.relativedelta(days=now.weekday(), hour=0, minute=0, second=0)) # 今週末 date = datetime(2017, 5, 19) print(date + relativedelta.relativedelta(weekday=6)) # 先週の月曜の0時 print(now - relativedelta.relativedelta(weeks=1, days=now.weekday(), hour=0, minute=0, second=0)) # 月初 print(now + relativedelta.relativedelta(day=1, hour=0, minute=0, second=0)) # 月末 print(now + relativedelta.relativedelta(day=1, months=1, days=-1, hour=23, minute=59, second=59))