スポンサーリンク
日付の計算方法
1日前とか、30日前とか、現在(今)からどのくらい、前なのか、先なのか、を計算する方法と、好きな形式で表示する方法。
好きな形式とは、〇月〇日や、〇年〇月〇日や〇/〇/〇など。
import datetime
# 現在
now = datetime.datetime.now()
# どのくらいの日数を前後させるかを決める
date = datetime.timedelta(days=30)
# 今から30日前(+にしたら今から30日後)
day = now - date
# 表示形式を決める
day = day.strftime('%Y/%m/%d')
# 計算した日付を表示させる
print(day)
datetimeをimportする
datetimeは、年、月、日、時間、分、秒、マイクロ秒まで取り出せる。
また、曜日や使い方も様々でドキュメントも長い。
ドキュメント 基本的な日付型および時間型
https://docs.python.org/ja/3/library/datetime.html
計算のやり方
同じ型にしないと計算が出来ない。
datetimeは、こんな感じの表示になっている。
2020-04-14 11:28:45.145678
年、月、日、時間、分、秒、マイクロ秒
そのため、同じ型同士で計算しないといけない。
その時使うのが、timedelta
datetime.timedelta(〇〇〇=数字)
の形で使う。
〇〇〇にいれられるのは以下
week | 週 |
day | 日 |
hours | 時間 |
minutes | 分 |
seconds | 秒 |
milliseconds | ミリ秒 |
microseconds | マイクロ秒 |
datetimeの計算 同じ型同士
import datetime
now = datetime.datetime.now()
date = datetime.timedelta(days=1)
day = now - date # 本日より1日前 (現時点2020/4/14)
print(day)
# 2020-04-13 12:13:57.753689
違うタイプの計算 違う型同士
import datetime
now = datetime.datetime.now()
today = datetime.date.today()
print(now) #2020-04-14 12:10:01.566262
print(today) #2020-04-14
print(now - today)
# TypeError: unsupported operand type(s)
for -: 'datetime.datetime' and 'datetime.date'
エラーが出る。
表示形式の指定
表示形式はstrftimeで出来る。
変数.timedelta('%アルファベット')
変数は、dayとかtodayとか自分で決めたもの
例)day = datetime.datetime.now()
# 2020-04-14 12:10:01.566262
import datetime
now = datetime.datetime.now()
print(now.strftime("%Y-%m-%d"))
# 2020-04-14
昨日と明日
from datetime import datetime, date, timedelta
import datetime
# 今日の日付
today = datetime.date.today()
print(today)
tomorrow = today + timedelta(days=1)
print(tomorrow)
yesterday = today - timedelta(days=1)
print(yesterday)
使えるアルファベット
strftime()の書式一覧のドキュメント
https://docs.python.org/ja/3/library/datetime.html#strftime-and-strptime-format-codes
よく使うものだけ抜粋
%Y | 西暦4桁 2020 |
%y | 西暦下2桁 20 |
%m | 月2桁 4月なら04 |
%d | 日2桁 1日なら01 |
%H | 時間2桁 夕方5時なら17 |
%M | 分数2桁 1分なら 01 |
%S | 秒数2桁 1秒なら 01 |
%f | マイクロ秒6桁 1なら 000001 |