Python日期时间和处理微秒

Python日期时间和处理微秒,python,datetime,Python,Datetime,因此,我想先说我不想使用datetime.strtime(),我已经编写了一个非常简单的解析器,代码如下: def datetime_parse(s): return datetime.datetime(int(s[0:4]), int(s[5:7]), int(s[8:10]), int(s[11:13]), int(s[14:16]), int(s[17:19]), int(s[20:26])) 这里的问题是,对于微秒转换,

因此,我想先说我不想使用
datetime.strtime()
,我已经编写了一个非常简单的解析器,代码如下:

def datetime_parse(s):
    return datetime.datetime(int(s[0:4]), int(s[5:7]), int(s[8:10]), int(s[11:13]),
                             int(s[14:16]), int(s[17:19]), int(s[20:26]))
这里的问题是,对于微秒转换,我有如下值:

2012-09-30 17:00:04.01350000
int()中读取时,
将自动舍入为0,据我所知
datetime.datetime()
将只接受
int
s。有解决办法吗


注意:在同时已更正的原始问题中,
datetime.datetime()
的最后一个参数是
int(s[20:27])
微秒应该在[0,1E6]范围内。您传递的是7位数字,而不是6位,因此额外的零将实际值增加10倍。请尝试
int(s[20:26])

它按预期工作-一旦解析回字符串,就会得到相同的字符串

>>> s = '2012-09-30 17:00:04.013500'
>>> d = datetime.datetime(int(s[0:4]), int(s[5:7]), int(s[8:10]), int(s[11:13]),   int(s[14:16]), int(s[17:19]), int(s[20:26]))
>>> d.strftime('%Y-%m-%d %H:%M:%S.%f')
'2012-09-30 17:00:04.013500'

你能详细解释一下为什么你有自己的解析器而不是使用
datetime.strtime()
?我在一个非常大的数据集上计算这个问题,用这种方式解析它要快得多。很抱歉,这是旧代码的遗物,已经被调整过了。主要问题是试图转换它。阅读
s[20:26]
并将其传递给int应该会自动转换该值(四舍五入到最接近的微秒)。您还想做些什么吗?因此,像:.001234这样的值会被四舍五入到0,我宁愿失去这种粒度。
s[20:26]
将返回
'001234'
,它被转换为
1234
。这是
datetime\u parse
函数在我的机器上返回的内容,供您输入:
2012-09-30 17:00:04.013500
@jma127绝对正确。您把我弄丢了……我们只是在
之后转换数字,怎么能将它四舍五入到
0