0

dateString = date.strftime('%Y-%m-%d %H:%M:%S.%f')在这个日期使用:由于某种原因,2012-06-28 16:11:17它返回的是 Objective-c 无法解析的。2012-06-28 16:11:17.999771如何将字符串的最后一部分限制为 3 位小数而不是 6 位?

4

2 回答 2

3

采用:

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

这是切片(语法[从:到(但不包括):步骤]):

>>> '123456'[:-3]
'123'
>>> '123456'[3:]
'456'
>>> '123456'[1:-1]
'2345'
>>> '123456'[::2]
'135'
>>> '123456'[::-1]
'654321'
>>> '123456'[-2::]
'56'
于 2012-06-28T17:07:21.000 回答
0

[:-3]方法失去了精度,即,'17.999771'[:-3] -> '17.999'但它应该是18.000

要正确舍入您可以datetimeobject 转换为 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'
于 2012-06-28T17:55:12.823 回答