2016-10-14 135 views
1

我有日期时间数据的字符串列表,看起来像这样:转换自定义字符串,日期时间格式

list = ["2016-08-02T09:20:32.456Z", "2016-07-03T09:22:35.129Z"] 

我想这个转换的例子格式(第一项):

"8/2/2016 9:20:32 AM" 

我尝试这样做:

from datetime import datetime 
for time in list: 
    date = datetime.strptime(time, '%Y %m %d %I %R') 

但返回错误:

ValueError: 'R' is a bad directive in format '%Y %m %d %I %R'

感谢您的帮助!

+0

您使用的日期格式与列表中的项目不匹配。 “%R”应该是什么意思? –

+0

它应该表示24小时的持续时间:https://www.tutorialspoint.com/python/time_strptime.htm – Litwos

+0

奇怪的是,它没有出现在官方文档中:https://docs.python.org/3.0/ library/datetime.html#id1 –

回答

1

你必须在你的代码的几个问题:

  • %R似乎并没有成为一个correct directive(这是你的错误,我认为你正在寻找%p)。
  • 在strptime格式为您正在使用listtime作为名称变量,它是坏的你输入的格式,而不是输出
  • ]

所以,你可以为先转换您的时间为正确的日期时间对象:

>>> t='2016-08-02T09:20:32.456Z' 
>>> d=datetime.strptime(t, "%Y-%m-%dT%H:%M:%S.%fZ") 
>>> d 
datetime.datetime(2016, 8, 2, 9, 20, 32, 456000) 

,然后将该对象转换为字符串由strftime

>>> datetime.strftime(d, "%m/%d/%Y %I:%M:%S %p") 
'08/02/2016 09:20:32 AM' 
+0

感谢您的更好的答案和解释! – Litwos

相关问题