2012-06-28 41 views
0

我在此日期使用dateString = date.strftime('%Y-%m-%d %H:%M:%S.%f')2012-06-28 16:11:17返回2012-06-28 16:11:17.999771,由於某些原因,Objective-c無法解析此文件。我怎樣才能將字符串的最後部分限制在3個小數位而不是6位?將日期轉換爲精度有限的字符串

+0

date.strftime( '%Y-%間 - %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(2012,6,28,0,0,0,0).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

要正確舍入可能的時間,請將它們四捨五入並轉換回去。例如爲:

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'