Python
date
datetime
Python3

Python datetime 日付の計算、文字列から変換【決定版】


Python datetimeで日付の計算、文字列から変換する方法

ここではPython標準のdatetimeによる、日付の取得・計算, 文字列からの変換方法を説明します。

Pythonの環境構築はこちらをご覧ください。

MacにPython3をインストールし環境構築【決定版】


現在時刻と日時の各値を取得

datetimeから現在時刻と日時の各値(年, 月, 日, 時, 分, 秒, 曜日)を取得します。

import datetime

"""
datetimeから現在日時を取得
"""

now = datetime.datetime.now() # => datetime.datetime(2017, 7, 1, 23, 15, 34, 309309)

"""
datetimeから各値を取得
年, 月, 日, 時, 分, 秒
"""

now.year # => 2017
now.month # => 7
now.day # => 1
now.hour # => 23
now.minute # => 15
now.second # => 34

"""
datetimeから曜日を取得
weekdayと曜日の対応
0: 月, 1: 火, 2: 水, 3: 木, 4: 金, 5: 土, 6: 日
"""

now.weekday() # => 5

year, month, day, hour, minute, second の他に microsecond の取得も可能です。


datetimeの日付の計算(足し算、引き算)

datetimeで日付の足し算、引き算の計算を行います。年月日が変化するような計算も可能です。

import datetime

"""
datetimeの日付の計算
weeks, days, hours, minutes, seconds
"""

now = datetime.datetime.now() # => datetime.datetime(2017, 7, 1, 23, 50, 1, 303872)

# 1週 加算
now + datetime.timedelta(weeks=1) # => datetime.datetime(2017, 7, 8, 23, 50, 1, 303872)
# 10日 減算
now - datetime.timedelta(days=10) # => datetime.datetime(2017, 6, 21, 23, 50, 1, 303872)
# 10時間 加算
now + datetime.timedelta(hours=10) # => datetime.datetime(2017, 7, 2, 9, 50, 1, 303872)
# 10分 減算
now - datetime.timedelta(minutes=10) # => datetime.datetime(2017, 7, 1, 23, 40, 1, 303872)
# 10秒 加算
now + datetime.timedelta(seconds=10) # => datetime.datetime(2017, 7, 1, 23, 50, 11, 303872)

# 7日, 1時間, 10分 加算
now + datetime.timedelta(days=7, hours=1, seconds=10) # => datetime.datetime(2017, 7, 9, 0, 50, 11, 303872)

weeks, days, hours, minutes, seconds の他に milliseconds, microseconds の計算も可能です。


文字列からdatetime, dateへ変換

文字列からdatetime, 'date'へ変換を行います。

import datetime

"""
stringからdatetimeへ変換
"""

# 例1
string_date_1 = '2017/07/01'
datetime.datetime.strptime(string_date_1, '%Y/%m/%d') # => datetime.datetime(2017, 7, 1, 0, 0)
# 例2
string_date_2 = '2017/07/01 12:06:19'
datetime.datetime.strptime(string_date_2, '%Y/%m/%d %H:%M:%S') # => datetime.datetime(2017, 7, 1, 12, 6, 19)
# 例3
string_date_3 = '2017-07-01 12:06:19'
datetime.datetime.strptime(string_date_3, '%Y-%m-%d %H:%M:%S') # => datetime.datetime(2017, 7, 1, 12, 6, 19)

"""
string, datetimeからdateへ変換
"""

string_date = '2017/07/01 12:06:19'
# string to datetime
dt = datetime.datetime.strptime(string_date, '%Y/%m/%d %H:%M:%S') # => datetime.datetime(2017, 7, 1, 12, 6, 19)
# datetime to date
datetime.date(dt.year, dt.month, dt.day) # => datetime.date(2017, 7, 1)


まとめ

datetimeによる日時の取得や計算、文字列からの変換方法の説明でした。

datetime型は、matplotlibplotly等でグラフを作成する際の軸にもそのまま使えるので便利です。

datetimeに関する公式ドキュメント

いいねをしていただけるとモチベーションに繋がりますので押していただけると嬉しいです。