从datetime数据获取日期

时间:2017-01-13 18:10:55

标签: python datetime

我有这种格式的日期时间数据

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

3 个答案:

答案 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'