Python datetime 日付の計算、文字列変換をする方法 strftime, strptime
2019/08/02 最終更新
ここではPython標準のdatetime
による、日付の取得・計算 timedelta(), 文字列への変換 strftime(), 文字列からの変換 strptime() 方法を説明します。
MacにおけるPythonの環境構築はこちらをご覧ください。
MacにPython3をインストールし環境構築【決定版】
現在時刻と日時の各値を取得
datetime
から現在時刻と日時の各値(年, 月, 日, 時, 分, 秒, 曜日)を取得します。
import datetime
"""
datetimeから現在日時を取得
"""
now = datetime.datetime.now() # => datetime.datetime(2019, 8, 2, 1, 57, 9, 99551)
"""
datetimeから各値を取得
年, 月, 日, 時, 分, 秒
"""
now.year # => 2019
now.month # => 8
now.day # => 2
now.hour # => 1
now.minute # => 57
now.second # => 9
"""
datetimeから曜日を取得
weekdayと曜日の対応
0: 月, 1: 火, 2: 水, 3: 木, 4: 金, 5: 土, 6: 日
"""
now.weekday() # => 4
year, month, day, hour, minute, second の他に microsecond の取得も可能です。
datetimeの日付の計算(足し算、引き算)
timedelta()メソッドを用いて、datetime
で日付の足し算, 引き算の計算を行います。年月日が変化するような計算も可能です。
import datetime
"""
datetimeの日付の計算
weeks, days, hours, minutes, seconds
"""
now = datetime.datetime.now() # => datetime.datetime(2019, 8, 2, 1, 59, 33, 338054)
# 1週 加算
now + datetime.timedelta(weeks=1) # => datetime.datetime(2019, 8, 9, 1, 59, 33, 338054)
# 10日 減算
now - datetime.timedelta(days=10) # => datetime.datetime(2019, 7, 23, 1, 59, 33, 338054)
# 10時間 加算
now + datetime.timedelta(hours=10) # => datetime.datetime(2019, 8, 2, 11, 59, 33, 338054)
# 10分 減算
now - datetime.timedelta(minutes=10) # => datetime.datetime(2019, 8, 2, 1, 49, 33, 338054)
# 10秒 加算
now + datetime.timedelta(seconds=10) # => datetime.datetime(2019, 8, 2, 1, 59, 43, 338054)
# 7日, 1時間, 10分 加算
now + datetime.timedelta(days=7, hours=1, seconds=10) # => datetime.datetime(2019, 8, 9, 2, 59, 43, 338054)
weeks, days, hours, minutes, seconds の他に milliseconds, microseconds の計算も可能です。
datetime, dateから文字列へ変換
strftime()メソッドを用いて、datetime
, date
から文字列へ変換を行います。
import datetime
"""
datetimeからstringへ変換
"""
now = datetime.datetime.now()
# 例1
now.strftime('%Y-%m-%d %H:%M:%S') # => '2019-08-02 02:20:43'
# 例2
now.strftime('%Y年%m月%d日') # => '2019年08月02日'
# 例3
now.strftime('%A, %B %d, %Y') # => 'Friday, August 02, 2019'
文字列からdatetime, dateへ変換
strptime()メソッドを用いて、文字列からdatetime
, date
へ変換を行います。
import datetime
"""
stringからdatetimeへ変換
"""
# 例1
string_date_1 = '2019/08/02'
datetime.datetime.strptime(string_date_1, '%Y/%m/%d') # => datetime.datetime(2019, 8, 2, 0, 0)
# 例2
string_date_2 = '2019/08/02 2:03:07'
datetime.datetime.strptime(string_date_2, '%Y/%m/%d %H:%M:%S') # => datetime.datetime(2019, 8, 2, 2, 3, 7)
# 例3
string_date_3 = '2019-08-02 12:06:19'
datetime.datetime.strptime(string_date_3, '%Y-%m-%d %H:%M:%S') # => datetime.datetime(2019, 8, 2, 12, 6, 19)
"""
string, datetimeからdateへ変換
"""
string_date = '2019/08/02 12:06:19'
# string to datetime
dt = datetime.datetime.strptime(string_date, '%Y/%m/%d %H:%M:%S') # => datetime.datetime(2019, 8, 2, 12, 6, 19)
# datetime to date
datetime.date(dt.year, dt.month, dt.day) # => datetime.date(2019, 8, 2)
まとめ
datetime
による日時の取得や計算、文字列からの変換方法の説明でした。
datetime
型は、matplotlib
やplotly
等でグラフを作成する際の軸にもそのまま使えるので便利です。
**いいね
**をしていただけるとモチベーションに繋がりますので押していただけると嬉しいです。