Python日期时间和处理微秒

时间:2012-11-15 23:41:26

标签: python datetime

所以我想通过说我不想使用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()只会接受int。有解决方法吗?

原始问题中的

注意:同时已得到纠正,datetime.datetime()的最后一个参数为int(s[20:27])

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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'