2015-04-06 145 views
-2

我有时间字符串是这样的:字符串转换为时间的Python

07/01/2015-14:31:58.520 

我使用这个命令行,将其转化:

import time 
timeStr = "07/01/2015-14:31:58.520" 
time.strptime(timeStr,'%d/%m/%y-%H:%M:%S.%f') 

但这返回:

ValueError: time data '07/01/2015-14:31:58.520' does not match format '%d/%m/%y-%H:%M:S.%f'

我的python版本是2.7.7

回答

4

%y表示2位数的年份,但您的字符串有4位数的年份。使用%Y(大写字母Y)表示4位数的年份。有关更多信息,请参阅the docs

time.strptime(timeStr, '%d/%m/%Y-%H:%M:%S.%f') 

注意datetime.strptime可能更有用,因为它会返回一个完整datetime对象,而不是一个元组。 The format syntax is essentially the same

1

应该(代替%Y%的Y)

time.strptime(timeStr,'%d/%m/%Y-%H:%M:%S.%f') 
0

为了得到一个datetime对象已经资本Ÿ为一年,使用python-dateutil

要安装

pip install python-dateutil 

Then

t = "07/01/2015-14:31:58.520" 
from dateutil import parser 
>>>parser.parse(t) 
datetime.datetime(2015, 7, 1, 14, 31, 58, 520000) 

tim = parser.parse(t) 
>>>str(tim.date()) 
'2015-07-01' 

datetime对象的所有操作都是可能的。

+0

这是从另一个第三方库吗? – Daemoneye 2015-04-06 13:46:08

+0

对不起,我没有提到它。 'pip安装python-dateutil' – itzMEonTV 2015-04-06 13:47:46

0

您需要使用代替%Y%Y

time.strptime(timeStr,'%d/%m/%Y-%H:%M:%S.%f') 
0

的time.strptime语法%d/%m/%y-%H:%M:%S.%f是不正确,应该是

"%d/%m/%Y-%H:%M:%S.%f"

其中唯一的区别是,%y已成为%Y 。究其原因是因为从 the docs%y是没有世纪数([00,99]),而%Y是世纪数,这是你使用的语法“2015”

测试,在Python 2.7.5和3.4 functinal .1

编辑:当我开始输入这个内容时为零答案,时间为6个答案,对不起!

编辑#2:datetime.strptime函数类似,所以如果你想使用它,你也可以!

相关问题