how to convert date string(2016/5/7/ 4:25:00 PM) to date format to (2016-05-07 4:25:00) in python
本问题已经有最佳答案,请猛点这里访问。
无法将此字符串转换为日期时间,这是迄今为止我在代码中尝试的方法:
1 2 3 4 5 | 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) |
它会给我带来错误,我在库中搜索,但仍然无法找出我的格式中有什么错误。请帮忙,我会免费的
你可以这样做:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 2 3 4 5 6 | >>> 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' |
我不确定您的格式字符串来自何处,但它是错误的。它根本不符合您的字符串格式。
查看文档中的可用选项。
你想要这个:
1 | dateobj = datetime.datetime.strptime(mystring,"%Y/%m/%d/ %I:%M:%S %p") |
这会给你一个约会对象。然后您可以这样做来重新格式化它:
1 | dateobj.strftime("%Y-%m-%d %I:%M:%S") |
你的几个问题:
- 你用了两次
%H 。这导致了一个错误,说它将被重新定义。 %B 是全名(即一月)。你有一个数字。- 是不正确的,因为您有/ s。T 根本不在你的字符串中。
您面临的问题是,为了转换日期对象,必须首先创建日期对象。这意味着您的格式必须与当前字符串格式
1 2 3 4 5 6 | 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) |
收到的输出有点奇怪,但它完全符合您的格式。访问日期时间库以查看格式代码,并阅读
Output: 2016-May-07T04:25:00-04:25