我有这种格式的日期时间数据
08:15:54:012 12 03 2016 +0000 GMT+00:00
我只需要提取日期,即python中的12 03 2016
。
我试过了
datetime_object=datetime.strptime('08:15:54:012 12 03 2016 +0000 GMT+00:00','%H:%M:%S:%f %d %m %Y')
我得到了
ValueError: unconverted data remains: +0000 GMT+00:00
答案 0 :(得分:1)
如果您不介意使用外部库,我发现dateparser module比pythons内部日期时间更直观。如果你只是做
,它几乎可以解析任何东西>>> import dateparser
>>> dateparser.parse('08:15:54:012 12 03 2016 +0000 GMT+00:00')
它声称它可以处理时区偏移,因为我还没有测试过它。
答案 1 :(得分:0)
如果你需要它作为字符串,那么使用切片
text = '08:15:54:012 12 03 2016 +0000 GMT+00:00'
print(text[13:23])
# 12 03 2016
但您也可以转换为日期时间
from datetime import datetime
text = '08:15:54:012 12 03 2016 +0000 GMT+00:00'
datetime_object = datetime.strptime(text[13:23],'%d %m %Y')
print(datetime_object)
# datetime.datetime(2016, 3, 12, 0, 0)
<强>顺便说一句:强>
在您的原始版本中,您必须删除+0000 GMT+00:00
usinig切片[:-16]
strptime('08:15:54:012 12 03 2016 +0000 GMT+00:00'[:-16], '%H:%M:%S:%f %d %m %Y')
您还可以使用split()
和join()
>>> x = '08:15:54:012 12 03 2016 +0000 GMT+00:00'.split()
['08:15:54:012', '12', '03', '2016', '+0000', 'GMT+00:00']
>>> x[1:4]
['12', '03', '2016']
>>> ' '.join(x[1:4])
'12 03 2016'
答案 2 :(得分:0)
你可以这样做:
d = '08:15:54:012 12 03 2016 +0000 GMT+00:00'
d = d[:23] #Remove the timezone details
from datetime import datetime
d = datetime.strptime(d, "%H:%M:%S:%f %m %d %Y") #parse the string
d.strftime('%m %d %Y') #format the string
你得到:
'12 03 2016'