Преобразование даты/времени в формате YYYYMMDD/HHMMSS в дату и время Python
У меня есть дата в формате YYYYMMDD и время в формате HHMMSS как строки в 4-м и 5-м элементах в списке. То есть:.
data[4] = '20100304'
data[5] = '082835'
Я создаю экземпляр datetime (в поле с именем генерирует) следующим образом:
generatedtime = datetime.datetime(int(data[4][:4]),int(data[4][4:6]),int(data[4][6:]),int(data[5][:2]),int(data[5][2:4]),int(data[5][4:6]))
Учитывая, что формат ввода не может измениться, существует ли более чистый способ создания моего экземпляра объекта datetime?
Ответы
Ответ 1
Не нужно импортировать time
; datetime.datetime.strptime
может сделать это сам по себе.
import datetime
dt=datetime.datetime.strptime(data[4]+data[5],'%Y%m%d%H%M%S')
print(dt)
# 2010-03-04 08:28:35
Информацию о кодах формата (например, %Y%m%d%H%M%S
) можно найти в docs для strftime
.
Ответ 2
Вы можете взглянуть на time.strptime.
import time
time.strptime('20100304 082835', '%Y%m%d %H%M%S')
Вышеприведенное предполагает 24-часовое время (%H
). Используйте вместо %I
, если используете 12-часовые часы.
Для получения полного списка доступных директив формата ознакомьтесь с документами для time.strftime
Ответ 3
import time, datetime
x = time.strptime("30 Nov 00", "%d %b %y")
datetime.datetime(x)
Вы также можете указать свой собственный формат строки даты, здесь doc.
Ответ 4
Вы можете немного очистить свой существующий код генератором (эквивалентно карте):
generatedtime = datetime.datetime( *(int(x) for x in
(data[4][:4], data[4][4:6], data[4][6:], data[5][:2], data[5][2:4],data[5][4:6])
) )
или даже, если вы сумасшедший, как лиса, вы можете сделать отчет о дате времени еще более чистым (за счет добавления смешной строки):
slices = ( (4, slice(4)), (4, slice(4,6) ), (4, slice(6,None)), (5, slice(2) ), (5, slice(2,4) ), (5, slice(4,6)) )
generatedtime = datetime.datetime( *(int(data[i][s]) for (i,s) in slices) )