Posted at

Pythonで文字列からdatetimeオブジェクトを生成する(Python3.3)

More than 5 years have passed since last update.


参考

8.1 datetime 基本的な日付型および時間型(Python3.3)


strptime()を使う

文字列からdatetimeオブジェクトを生成するには、strptime()を使う。


文字列からdatetimeオブジェクトを生成する

from datetime import datetime

>>> t = datetime.strptime('2014/01/01 00:01:02', '%Y/%m/%d %H:%M:%S')
>>> t.strftime('%Y/%m/%d %H:%M:%S')
'2014/01/01 00:01:02'


文字列からdateオブジェクトを生成する

参考URLにもあるように、dateオブジェクトにはstrptime()メソッドがない。よって、以下の様な方法はだめ。


これはエラー

>>> from datetime import date

>>> t = date.strptime('2014/01/01', '%Y/%m/%d')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: type object 'datetime.date' has no attribute 'strptime'

文字列からdateオブジェクトを生成するには、


  1. datetimeのstrptime()でdatetimeオブジェクトを生成


  2. 生成したdatetimeオブジェクトからdateオブジェクトを生成


という方法をとるのが良さそう。

>>> from datetime import datetime

>>> t = datetime.strptime('2014/01/01', '%Y/%m/%d')
>>> t.isoformat() #この段階では、timeの部分が0で初期化されている
'2014-01-01T00:00:00'
>>> date = t.date()
>>> date.isoformat()
'2014-01-01'


文字列からtimeオブジェクトを生成する

文字列からtimeオブジェクトを生成するのも、文字列からdateオブジェクトを生成するときと同様の方法でできる。

>>> from datetime import datetime

>>> t = datetime.strptime('13:14:15', '%H:%M:%S')
>>> t.isoformat() #この段階では、dateの部分が1900年1月1日で初期化されている
'1900-01-01T13:14:15'
>>> t = t.time()
>>> t.isoformat()
'13:14:15'