【问题标题】:Convert list of time stamps from timedelta to readable string format将时间戳列表从 timedelta 转换为可读的字符串格式
【发布时间】:2017-04-27 23:41:11
【问题描述】:

我要做的是获取两个时间戳列表,找到相应时间戳对之间的差异,然后将差异打印为另一个列表。当我打印最终的时差列表时,我得到了这个:

[datetime.timedelta(0, 2700), datetime.timedelta(0, 1800)]

这是我的参考代码:

import time
import datetime

strlist1 = ['12:45:00', '01:30:00']
format = '%H:%M:%S'
i = 0
timelist1 = []
for time in strlist1:
    timelist1.append(datetime.datetime.strptime(strlist1[i], format))
    i += 1

strlist2 = ['12:00:00', '01:00:00']
k = 0
timelist2 = []
for time in strlist2:
    timelist2.append(datetime.datetime.strptime(strlist2[k], format))
    k += 1
list3 = [x1 - x2 for (x1, x2) in zip(timelist1, timelist2)]

另外,我对 Python 还很陌生,因此非常感谢任何其他关于改进和/或改变其他任何东西的建设性意见。谢谢!

【问题讨论】:

  • 你的预期输出是什么?
  • 对不起,我正在尝试以可读的字符串格式打印差异时间列表。

标签: python python-2.7 datetime time timedelta


【解决方案1】:

列表元素将使用repr,而repr 通常不是人类可读的。

>>> L = [datetime.timedelta(0, 2700), datetime.timedelta(0, 1800)]
>>> L
[datetime.timedelta(0, 2700), datetime.timedelta(0, 1800)]

你想要:

>>> map(str, L)  # or: [str(delta) for delta in L]
['0:45:00', '0:30:00']

【讨论】:

    【解决方案2】:

    这应该会给你一个更易读的格式:

    [((datetime.datetime.strptime('00:00:00', format))+e).strftime(format) for e in list3]
    Out[340]: ['00:45:00', '00:30:00']
    

    【讨论】:

      【解决方案3】:

      这是一个开始。在 Python 中,迭代序列时不需要计数器,因此不需要变量 ik。正如 wim 指出的那样,您可能需要输出的字符串表示形式。最后,您可以只使用列表推导而不是循环来生成列表。

      import time
      import datetime
      
      strlist1 = ['12:45:00', '01:30:00']
      format = '%H:%M:%S'
      # i = 0  Not needed
      timelist1 = [datetime.datetime.strptime(s, format) for s in strlist1]
      
      strlist2 = ['12:00:00', '01:00:00']
      timelist2 = [datetime.datetime.strptime(s, format) for s in strlist2]
      
      list3 = [str(x1 - x2) for (x1, x2) in zip(timelist1, timelist2)]
      

      【讨论】:

      • 我尝试了这些更改并收到:TypeError:strptime() argument 1 must be string, not list... 编辑:等待 nvm!有用! :D 谢谢!
      • 这在 Python 2.7 中对我来说很好用。你用的是什么版本的 Python?
      • 抱歉,我使用的是 Jupyter Notebook,有时我必须将我的代码复制并粘贴到一个新文件中,以便网站赶上所做的更改。再次感谢您!
      猜你喜欢
      • 2011-04-07
      • 2021-12-28
      • 2014-09-21
      • 1970-01-01
      • 1970-01-01
      • 2016-05-24
      • 2022-01-21
      • 2021-08-13
      相关资源
      最近更新 更多