如何在python中将日期字符串(2016/5/7/4:25:00 PM)转换为日期格式(2016-05-07 4:25:00)

时间:2016-06-01 11:41:31

标签: python datetime

无法将此字符串转换为日期时间,这是我在代码中尝试的内容:

import datetime

mystring = '2016/5/7/  4:25:00 PM'
dateobj = datetime.datetime.strptime(mystring, "%Y-%B-%dT%H:%M:%S-%H:%M")
print (dateobj)
它引发了我的错误,我在图书馆搜索,仍然无法弄清楚我的格式错误。 请给我任何帮助,我会非常赞赏它

4 个答案:

答案 0 :(得分:1)

你可以这样做:

import datetime    
mystring = '2016/5/7 4:25:00 PM'


dateobj = datetime.datetime.strptime(mystring, "%Y/%m/%d %I:%M:%S %p")

dateobj
Out[1]: datetime.datetime(2016, 5, 7, 16, 25)

dateobj1 = datetime.datetime.strptime(mystring, "%Y/%m/%d %I:%M:%S %p").strftime("%Y-%m-%d %I:%M:%S")

dateobj1
Out[2]: '2016-05-07 04:25:00'

答案 1 :(得分:0)

您遇到的问题是,为了转换日期对象,您首先必须创建一个日期对象。这意味着您的格式必须与当前字符串格式'2016/5/7 4:25:00 PM' = "%Y/%m/%d %H:%M:%S %p"匹配。因此,我们现在可以创建日期obj,然后使用strftime格式"%Y-%B-%dT%H:%M:%S-%H:%M"格式化它。

import datetime

mystring = '2016/5/7 4:25:00 PM'
dateobj = datetime.datetime.strptime(mystring, "%Y/%m/%d %H:%M:%S %p")
dateobj = datetime.datetime.strftime(dateobj, "%Y-%B-%dT%H:%M:%S-%H:%M")
print (dateobj)

收到的输出有点时髦,但它完全符合您的格式。访问datetime库以查看格式代码,并阅读strptime vs strftime。祝你好运。

  

产出:2016年5月7日04:25:00-04:25

答案 2 :(得分:0)

我不确定你的格式字符串来自哪里,但这是错误的。它根本不符合您的字符串格式。

看看available options in the documentation

你想要这个:

dateobj = datetime.datetime.strptime(mystring, "%Y/%m/%d/ %I:%M:%S %p")

这将为您提供日期对象。然后,您可以按照自己的方式重新格式化:

dateobj.strftime("%Y-%m-%d %I:%M:%S")

你的一些错误:

  • 您曾两次使用%H。这导致了一个错误,说它将被重新定义。
  • %B是完整的月份名称(即1月份)。你有一个数字。
  • 由于您有- s。
  • ,因此/不正确
  • T根本不在您的字符串中。

答案 3 :(得分:0)

轻松使用dateutil.parser.parse

>>> from dateutil.parser import parse
>>> d = parse('2016/5/7/  4:25:00 PM')
>>> d.strftime("%Y-%B-%dT%H:%M:%S-%H:%M")
'2016-May-07T16:25:00-16:25'
>>> d.strftime("%Y-%m-%d %I:%M:%S")
'2016-05-07 04:25:00'
相关问题