所以我想通过说我不想使用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])
。
答案 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'