2015-01-15 4 views
2

datetime을 사용하여 시간 문자열을 변환하고 있습니다. 형식을 지정하는 데 reference을 사용했습니다. 형식을 어떻게 코딩해야합니까?datetime으로 변환하려고 시도했습니다.

In [19]:import datetime 

In [20]: d 
Out[20]: 'Oct. 30, 2014, 6:17 a.m.' 

In [21]: format 
Out[21]: '%b. %d, %Y, %I:%M%p.' 

In [22]: date_object = datetime.datetime.strptime(d, format) 
--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-22-78ccb659d6ac> in <module>() 
----> 1 date_object = datetime.datetime.strptime(d, format) 

/usr/lib/python2.7/_strptime.pyc in _strptime(data_string, format) 
    323  if not found: 
    324   raise ValueError("time data %r does not match format %r" % 
--> 325       (data_string, format)) 
    326  if len(data_string) != found.end(): 
    327   raise ValueError("unconverted data remains: %s" % 

ValueError: time data 'Oct. 30, 2014, 6:17 a.m.' does not match format '%b. %d, %Y, %I:%M%p.' 

은 내가이

/home/tilaprimera/.virtualenvs/picovico/lib/python2.7/site-packages/django/db/models/fields/__init__.py:1278: RuntimeWarning: DateTimeField GCMDevice.created_at received a naive datetime (2014-10-30 06:17:00) while time zone support is active. 
    RuntimeWarning) 

것은이고, 나는이 시간 그러나 불행하게도 데이터베이스를 쿼리하는 것을 시도하고 얻을이 도구 "dateutil"와

In [20]: d 
Out[20]: 'Oct. 30, 2014, 6:17 a.m.' 

In [34]: from dateutil import parser 

In [35]: date_obj = parser.parse(d) 

In [36]: date_obj 
Out[36]: datetime.datetime(2014, 10, 30, 6, 17) 

건너 온 , 약간의 정보가 손실되면서, 나는 그 시간에 성냥을 얻지 못한다.

+0

언어 태그를 추가하십시오. – kennyzx

+0

문자열이 "제공 한 형식과 일치하지 않습니다"라는 것이 문제라고 생각합니다. 확인해주세요. – Marcin

답변

3

닫기,하지만 시가가 없습니다. 형식 문자열로 datetime.datetime.now().strftime()을 수행하고 조금 놀아서 알아 냈습니다. 불행하게도 (I 시도 영어 로케일에서 적어도) a.m. 받아 어떤 형식 지정자 없습니다

d = 'Oct. 30, 2014, 6:17 AM' 
format = '%b. %d, %Y, %I:%M %p' 

: 당신은 두 가지 사항을 변경해야합니다. 이에 대한 자세한 내용은 다음을 참조하십시오. https://stackoverflow.com/a/2925280/4323

+0

그래서 "a.m."을 바꿔야합니다. AM에? – tilaprimera

+1

그건 편도 일 겁니다. –

1

'a.m.' 표준이 아니므로 re 모듈을 사용하여 대체 할 수 있습니다. 또한 분 위치 뒤에 형식 문자열에 공백이 없습니다.

import datetime 
import re 

d='Oct. 30, 2014, 6:17 a.m.' 
format='%b. %d, %Y, %I:%M %p' 

d = re.sub('([pa])\.m\.',r'\1m',d) 
date_object = datetime.datetime.strptime(re.sub('([pa])\.m\.',r'\1m',d),format) 
관련 문제