无法将此字符串转换为日期时间,这是我在代码中尝试的内容:
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)
它引发了我的错误,我在图书馆搜索,仍然无法弄清楚我的格式错误。
请给我任何帮助,我会非常赞赏它
答案 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'