2010-03-04 14 views
15

날짜가 YYYYMMDD 형식이고 HHMMSS 형식의 시간이 목록의 네 번째 및 다섯 번째 요소의 문자열입니다. IE :YYYYMMDD/HHMMSS 형식의 날짜/시간을 파이썬 날짜 시간으로 변환

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

이 같은 (라는 이름의 필드가 생성에서) 날짜의 인스턴스를 만드는 오전 : 입력 형식을 변경할 수없는 점을 감안

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

코드는 어색하게 보이지만, 잘 처리됩니다. –

답변

35

가져올 필요 없음 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 대한 docs 참조.

+1

시간 소인을 지정하지 않으면 시간은 현지 시간으로 처리됩니다. 다음 예는 UTC 시간을 Unix 타임 스탬프로 변환합니다 :'datetime.datetime.strptime (timeval, "% Y % m % d % H % M % S"). replace (tzinfo = datetime.timezone.utc) .timestamp() '(실제로 FTP MDTM 응답을 구문 분석하기 위해 이것을 사용합니다) – Lekensteyn

4

time.strptime을 살펴보십시오.

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

상기

은 24 시간 ( %H)을 가정한다. 12 시간제 시계를 사용하는 경우 %I을 대신 사용하십시오. 가능한 포맷 지시자의 전체 목록

, 또한 날짜 문자열의 자신의 형식을 제공 할 수 time.strftime

0
import time, datetime 

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

의 문서를 확인, 여기 doc입니다.

0
당신은 당신의 기존 코드 (지도에 해당) 발전기와 조금 정리 할 수 ​​

: 당신이 여우 같은 미친 경우

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)) 
관련 문제