Преобразование даты / времени в формате ГГГГММДД / ЧЧММСС в дату и время Python - PullRequest
18 голосов
/ 04 марта 2010

У меня есть дата в формате ГГГГММДД и время в формате ЧЧММСС в виде строк в 4-м и 5-м элементах списка. I.E.:

data[4] = '20100304'
data[5] = '082835'

Я создаю экземпляр datetime (в поле с именем generate) следующим образом:

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?

Ответы [ 4 ]

42 голосов
/ 04 марта 2010

Нет необходимости импортировать 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) приведена в документах для strftime.

4 голосов
/ 04 марта 2010

Вы можете взглянуть на time.strptime .

import time
time.strptime('20100304 082835', '%Y%m%d %H%M%S')

Приведенное выше предполагает 24-часовые часы (%H). Вместо этого используйте %I, если используете 12-часовые часы.

Полный список доступных директив формата см. В документации на time.strftime

0 голосов
/ 04 марта 2010

Вы можете немного очистить свой существующий код с помощью генератора (эквивалент карты):

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) )
0 голосов
/ 04 марта 2010
import time, datetime

x = time.strptime("30 Nov 00", "%d %b %y")
datetime.datetime(x)

Вы также можете указать собственный формат строки даты, здесь doc .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...