LoginSignup
19
21

More than 5 years have passed since last update.

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

Posted at

参考

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'
19
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
21