Python: 日付の操作
Pyhonの日付操作方法です。現在日時の取得から、年月日、時間それぞれの値を取得、加算・減算、月初・月末の取得について書き留めておきます。
現在日時の取得
Pythonで日付操作する場合はdatetime.datetime
オブジェクトをインポートします。文字列にする場合はstrftime
を使います。
from datetime import datetime dt = datetime.now() print(dt.strftime('%Y/%m/%d %H:%M:%S'))
[ad#top-1]
年月日、時間それぞれの値を取得する
年月日、時間それぞれの値を取得するのは以下の通り。曜日だけweekday()
となっていることに注意しましょう。(なんでだ??)
from datetime import datetime dt = datetime.now() print("年 :", dt.year) print("月 :", dt.month) print("日 :", dt.day) print("曜日:", dt.weekday()) print("時間:", dt.hour) print("分 :", dt.minute) print("秒 :", dt.second)
曜日ですが、月曜日からスタートして0,1、2…となり、最後が日曜日で6です。今日は土曜日なので「5」と表示されます。
日時の加算・減算
日時の加算・減算には、datetime.timedelta
をインポートする必要があります。
from datetime import datetime, timedelta from dateutil.relativedelta import relativedelta dt = datetime.now() print("1日後") print((dt + timedelta(days=1)).strftime('%Y/%m/%d %H:%M:%S')) print("1週間後") print((dt + timedelta(weeks=1)).strftime('%Y/%m/%d %H:%M:%S')) print("1時間後") print((dt + timedelta(hours=1)).strftime('%Y/%m/%d %H:%M:%S')) print("1週間後と1日前") print((dt + timedelta(weeks=1, days=-1)).strftime('%Y/%m/%d %H:%M:%S'))
なんと、残念ながら、datetime.timedelta
で月や年の加算減算はできません。エラーになります。
月と年はdateutil.relativedelta
オブジェクトが必要になります。pipコマンドでインストールしましょう。
pip install python-dateutil
その上で下記の通り年月の計算を行います。
from datetime import datetime from dateutil.relativedelta import relativedelta dt = datetime.now() print("1ヶ月後") print((dt + relativedelta(months=1)).strftime('%Y/%m/%d %H:%M:%S')) print("1ヶ月後と1日前") print((dt + relativedelta(months=1, days=-1)).strftime('%Y/%m/%d %H:%M:%S'))
月初・月末を取得する
from datetime import datetime#, timedelta from dateutil.relativedelta import relativedelta dt = datetime.now() print("今月初") dt2 = datetime(dt.year,dt.month,1) print(dt2.strftime('%Y/%m/%d %H:%M:%S')) print("先月末") dt2 = datetime(dt.year,dt.month,1) + relativedelta(days=-1) print(dt2.strftime('%Y/%m/%d %H:%M:%S')) print("今月末") dt2 = datetime(dt.year,dt.month,1) + relativedelta(months=1, days=-1) print(dt2.strftime('%Y/%m/%d %H:%M:%S'))
[ad#ad-1]
スポンサーリンク