Pythonで文字列をdatetimeオブジェクトに変換する
Pythonで日付や時刻の計算をするにはdatetimeオブジェクトで行うのが楽なので、日付や時刻を表す文字列をdatetimeオブジェクトに変換します。
逆に、datetimeオブジェクトから日付や時刻の文字列に変換する方法もありますが、それは 別の投稿 を参照してください。
目次
文字列からdatetimeオブジェクトに変換する方法
datetimeオブジェクトのstrptimeメソッドは、文字列を指定し書式でdatetimeオブジェクトに変換します。
D = datetime.datetime.strptime(S, f)
変数 |
内容 |
---|---|
S |
日付や時刻を示す文字列 |
f |
変換する書式を示す文字列 |
D |
datetimeオブジェクト |
1つめのdatetimeはモジュールを示すものです。
書式を指定する文字列に使われる主な文字です。
書式 |
内容 |
---|---|
%Y |
年(0000~9999) |
%y |
年(00~99) |
%m |
月(01~12) |
%d |
日にち(01~31) |
%H |
時(00~12) |
%M |
分(00~59) |
%S |
秒(00~59) |
%f |
マイクロ秒(000000~999999) |
変換実施例
試してみました。
>>> import datetime
>>> D = datetime.datetime.strptime('2018-01-02 03:04:05.678901', '%Y-%m-%d %H:%M:%S.%f')
>>> D
datetime.datetime(2018, 1, 2, 3, 4, 5, 678901)
>>> print(D)
2018-01-02 03:04:05.678901
>>> day = datetime.date.strptime('2018-01-02 03:04:05.678901', '%Y-%m-%d')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: type object 'datetime.date' has no attribute 'strptime'
>>> time = datetime.time.strptime('2018-01-02 03:04:05.678901', '%H:%M:%S')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: type object 'datetime.time' has no attribute 'strptime'
datetimeには変換できましたが、dateやtimeにはstrptimeは無いのですね。
文字列と書式が合っていないとエラーが出るようですね。
>>> import datetime
>>> D = datetime.datetime.strptime('2018-01-02 03:04:05.678901', '%Y-%m-%d')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\anaconda3\lib\_strptime.py", line 565, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "C:\anaconda3\lib\_strptime.py", line 365, in _strptime
data_string[found.end():])
ValueError: unconverted data remains: 03:04:05.678901
公開日
広告