0

所以我想先说我不想使用datetime.strptime(),我写了一个非常简单的解析器,代码如下:

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()只会接受ints。有解决方法吗?

注意:在同时更正的原始问题中,最后一个参数datetime.datetime()int(s[20:27])

4

2 回答 2

1

微秒应在 [0, 1E6) 范围内。您传递的是 7 位而不是 6 位,因此额外的零会将实际值增加 10 倍。请尝试int(s[20:26])改用。

于 2012-11-15T23:47:17.930 回答
1

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

>>> 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'
于 2012-11-15T23:59:00.450 回答