2011-11-28 2 views
2

파이썬 2.5에있어 및과 같은 코드 페이지 매김을하고, 앱 엔진에서 실행 : 다음strptime과 strftime이 다르게 동작하는 이유는 무엇입니까?

NEXT_FORMAT = "%Y-%m-%d %H:%M:%S" 

current = model.completed_on.strftime(NEXT_FORMAT) 

completed_before = datetime.datetime.strptime(current, NEXT_FORMAT) 
모든 지금

와의 strftime이 2011-11-24 05:13:54.355436처럼 보이는 시간을 드롭하고 다음 strptime 노력 날려 버리겠다 그것을 먹는

ValueError: unconverted data remains: .355436 

그래서, 당신은 십진수로 초는 부동 소수점 숫자를 만드는 %의 S는 말한다 형식을 사용하는 경우 그 이유는 무엇입니까? 그리고 그것은 일어날 것입니다, 왜 똑같은 방식으로 strptime을 다루지 않습니까? 이것에

+0

strftime을 호출하기 전에 completed_on 값을 기록 할 수 있습니까? strftime이 당신이 그것을 요구하지 않았을 때 마이크로 초 단위로 고정시킬 것 같은 이상한 것처럼 보입니다. –

+0

내 솔루션 지금까지 작업을 완료 current.split ('.') [0] 할 수 있었다. 저는 이것이 파이썬에서 처음으로 밟은 첫 번째 발가락 부분이라고 생각합니다. 다른 모든 것들은 예상대로 작동했습니다. – boatcoder

답변

7

변경이 :

NEXT_FORMAT = "%Y-%m-%d %H:%M:%S.%f" 

이뿐만 아니라 마이크로 초 부분을 변환합니다.

또는 마이크로 초를 제거하려는 경우 strptime을 호출하기 전에 replace를 사용할 수 있습니다.

current = current.replace(microsecond=0) 
+1

'% f'가 2.6에 추가되었고 OP가 2.5를 사용하는 것 같습니다. – donkopotamus

+0

좋은 캐치. 이 경우 replace를 사용하면 strptime을 호출하기 전에 호출해야한다고 생각합니다. 마이크로 초가 어디서 오는지 궁금합니다. –

+0

strftime은 네이티브 C 구현에 의해 수행되고있을 것입니다.이 플랫폼에서 어떤 플랫폼이 관찰되고 있는지 알면 흥미로울 것입니다 ... – donkopotamus

관련 문제