お役立ち

【Python】文字列と日付(datetime,date)の変換.例とstrp,strfの覚え方

  • このエントリーをはてなブックマークに追加

日付から文字列(datetime→str)

from datetime import datetime
now = datetime.now()
dt_str = now.strftime('%Y/%m/%d %H:%M:%S')
# '2018/12/01 16:24:07'

ISO形式だともっと楽!

from datetime import datetime
now = datetime.now()
dt_str = now.isoformat()
# '2018-12-01T16:23:01.339504'
dt_str = now.isoformat(' ')
# '2018-12-01 16:23:01.339504'
dt_str = now.isoformat(' ', 'seconds')# Python3.6以降
# '2018-12-01 16:23:01'

日付と時間の間を変更することも可能です。


dt_str = now.isoformat(' ')
# '2018-12-01 16:23:01.339504'
dt_str = now.isoformat('_')
# '2018-12-01_16:23:01.339504'

どの精度で時間を表示するかも指定できます。(Python3.6以降)


dt_str = now.isoformat(' ', 'seconds')
# '2018-12-01 16:25:41'
dt_str = now.isoformat(' ', 'minutes')
# '2018-12-01 16:25'
dt_str = now.isoformat(' ', 'hours')
# '2018-12-01 16'

文字列から日付(str→datetime)

from datetime import datetime
dt_str = '2018/08/04 19:17:01'
dt = datetime.strptime(dt_str, '%Y/%m/%d %H:%M:%S')
# datetime.datetime(2018, 8, 4, 19, 17, 1)
date = dt.date()
# datetime.date(2018, 8, 4)

ISOフォーマットは楽に変換できる!(Python3.7以降)

from datetime import datetime
dt_str = '2018-08-04 19:17:01'
dt = datetime.fromisoformat(dt_str)
# datetime.datetime(2018, 8, 4, 19, 17, 1)
dt_str = '2018-08-04T19:17:01'
dt = datetime.fromisoformat(dt_str)# Python3.7以降
# datetime.datetime(2018, 8, 4, 19, 17, 1)

よく使う日付フォーマット(Python datetime format)

%m
%d
%H 時間
%M
%S
%Y/%m/%d %H:%M:%S 2015/11/13 16:12:01など
%Y-%m-%d %H:%M:%S 2015-11-13 16:12:01など

strfとstrpの覚え方

気づいてみると単純なことですが、
これに気づくまではいつもどっちだかわからずにググってました。

  • strp→str parse→文字列(str)をパース(parse)する
  • strf→str format→文字列形式(str format)にする

日付からタイムスタンプ (datetime→float)

Pythonでは、タイムゾーンの処理は、OSの設定を利用しています。

from datetime import datetime
import time
dt_str = '2018-08-04 19:17:01'
dt = datetime.strptime(dt_str, '%Y-%m-%d %H:%M:%S')
time_stamp = time.mktime(dt.timetuple())

Python3では、もっと簡単に

from datetime import datetime
import time
dt_str = '2018-08-04 19:17:01'
dt = datetime.strptime(dt_str, '%Y-%m-%d %H:%M:%S')
time_stamp = dt.timestamp()

タイプスタンプから日付(float→datetime)

こちらも、タイムゾーンの処理は、自動設定です。


from datetime import datetime
datetime.fromtimestamp(1533377821.0)
  • このエントリーをはてなブックマークに追加