2012-06-28 2 views
0

나는 을 사용하고 있습니다. 2012-06-28 16:11:17.999771을 반환하는 2012-06-28 16:11:17은 Objective-c에서 분석 할 수 없습니다. 문자열의 마지막 부분을 6이 아닌 소수 자릿수 3 자로 제한하려면 어떻게합니까?날짜를 한정된 정밀도로 문자열로 변환합니다.

+0

date.strftime ('% Y- % M- % D % H %의 M % S. %의 수 f') - 3 – astynax

+0

니스,이 일! [: -3]은 무엇을 나타 냅니까? (답으로 게시하면 받아 들일 수 있습니다.) – Snowman

답변

3

사용 :

date.strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] 

이것은 slicing (구문 [발 :에 (그러나 그러나 포함하지 않음) : 단계])

>>> '123456'[:-3] 
'123' 
>>> '123456'[3:] 
'456' 
>>> '123456'[1:-1] 
'2345' 
>>> '123456'[::2] 
'135' 
>>> '123456'[::-1] 
'654321' 
>>> '123456'[-2::] 
'56' 
+0

그래도 문제가 있습니까? 위의 코드에서 내 날짜가 소수점 이하 3자를 반환 할 가능성이 있습니까? 만약 그렇다면, 내가 원하는 것보다 더 많이 벗어날 것입니다 .. – Snowman

+2

@mohabitar,'datetime (20126280000) .strftime ('% Y- % m- % d % H : % M : % S. % f ')'->''2012-06-28 00 : 00 : 00.000000 '' – astynax

0

[:-3]있어서 정밀 즉 '17.999771'[:-3] -> '17.999' 느슨해하지만해야 18.000이되어야합니다.

정확히 convert datetime object to seconds 일 수있는 시간을 반올림하고 반올림하여 다시 변환하십시오. 예컨대 :

from datetime import datetime 

dt = datetime(2012, 6, 28, 16, 11, 17, 999771) 


secs = (dt - datetime(1970, 1, 1)).total_seconds() 
dt = datetime.utcfromtimestamp(round(secs, 3)) # round to thousands 
print dt.strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] 
# -> '2012-06-28 16:11:18.000' 
관련 문제