питон датавремя.strptime: игнорировать долю секунды
Я работаю над преобразованием читаемого человеком времени в
3 ответов
Так как меня действительно не волнуют доли секунды, я должен просто взять первый 19
символы читаемой человеком строки и применить простой формат для этого.
>>> humanTime = '2012/06/10T16:36:20.509Z'
>>> datetime.datetime.strptime(humanTime[:19], "%Y/%m/%dT%H:%M:%S")
datetime.datetime(2012, 6, 10, 16, 36, 20)
решение вашей конкретной проблемы: используйте %f для микросекунд:
>>> datetime.datetime.strptime(humanTime, "%Y/%m/%dT%H:%M:%S.%fZ")
однако, проблема все еще существует для общего случая. Если у вас будет более 6 цифр после точки, то это решение не будет работать.
проблема в том, что, насколько мне известно, datetime.значение datetime.принятые форматы strptime не включают плавающие секунды в целом. Обходной путь-игнорировать секунды при создании переменной datetime, а затем добавлять секунды с помощью значение datetime.timedelta.
>>> import numpy as np
>>> import datetime
>>>
>>> humanTime = '2012/06/10T16:36:20.509Z'
>>> dt_time_no_seconds = datetime.datetime.strptime(humanTime[:-8], "%Y/%m/%dT%H:%M")
>>> seconds = np.float(humanTime[-7:-1])
>>> dt_time = dt_time_no_seconds+datetime.timedelta(seconds=seconds)
>>> dt_time_no_seconds
datetime.datetime(2012, 6, 10, 16, 36)
>>> dt_time
datetime.datetime(2012, 6, 10, 16, 36, 20, 509000)
надеюсь, что это помогает.
директива %f
интерпретирует дробные секунды:https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior
humanTime = '2012/06/10T16:36:20.509Z'
print datetime.datetime.strptime(humanTime, '%Y/%m/%dT%H:%M:%S.%fZ')
>> 2012-06-10 16:36:20.509000