目的
日時を取得したい。
また、1日前や1日後など、日付の加算減算もしたい。
datetimeモジュールの利用
現在時刻を取得するにはdatetimeモジュールを利用すればよい。
また、日付の加算減算などはdatetime.timedeltaを利用する。
現在時刻の取得
datetime.now()
日の加算
datetime.now() + timedelta(days=1)
日の減算
datetime.now() + timedelta(days=-1)
文字列への変換
上記で取得できる変数の型は’datetime’型なので、文字列連結とかができない。
文字列型に変換するにはstrftime関数を利用する。
datetime.now().strftime('%Y/%m/%d %H:%M:%S')
検証
テストプログラム
実際に検証用プログラムを書いてみる。
# coding:utf-8
# モジュールインポート
from datetime import datetime
from datetime import timedelta
# 現在時間の取得
nowtime = datetime.now()
print('現在時刻: ', nowtime)
# 時刻の加算
print('---')
print('1日後 : ', nowtime + timedelta(days=1))
print('1週間後: ', nowtime + timedelta(weeks=1))
print('1時間後: ', nowtime + timedelta(hours=1))
print('1分後 : ', nowtime + timedelta(minutes=1))
print('1秒後 : ', nowtime + timedelta(seconds=1))
# 時刻の減算
print('---')
print('1日前 : ', nowtime + timedelta(days=-1))
print('1週間前: ', nowtime + timedelta(weeks=-1))
print('1時間前: ', nowtime + timedelta(hours=-1))
print('1分前 : ', nowtime + timedelta(minutes=-1))
print('1秒前 : ', nowtime + timedelta(seconds=-1))
# 文字列への変換
print('---')
print('文字列 : ', nowtime.strftime('%Y/%m/%d %H:%M:%S'))
print('unixtime: ', nowtime.strftime('%s'))
# 数値への変換
print('---')
print('年: ', nowtime.year)
print('月: ', nowtime.month)
print('日: ', nowtime.day)
print('時: ', nowtime.hour)
print('分: ', nowtime.minute)
print('秒: ', nowtime.second)
datetime型変数には年月日時分秒のint型変数も格納されているので、指定することで各日付データの数値も取得できる。
出力結果
$ python dateTest.py 現在時刻: 2019-06-14 11:42:02.229927 ---------- 1日後 : 2019-06-15 11:42:02.229927 1週間後: 2019-06-21 11:42:02.229927 1時間後: 2019-06-14 12:42:02.229927 1分後 : 2019-06-14 11:43:02.229927 1秒後 : 2019-06-14 11:42:03.229927 ---------- 1日前 : 2019-06-13 11:42:02.229927 1週間前: 2019-06-07 11:42:02.229927 1時間前: 2019-06-14 10:42:02.229927 1分前 : 2019-06-14 11:41:02.229927 1秒前 : 2019-06-14 11:42:01.229927 ---------- 文字列 : 2019/06/14 11:42:02 unixtime: 1560480122 ---------- 年: 2019 月: 6 日: 14 時: 11 分: 42 秒: 2
日時の加算減算はもちろん、unixtimeへの変換もできている。
アクセスログなどはloglotateするとファイル名に日付がついたりするので、ログ解析の時などに減算は必須である。
参考サイト
コメント