将时间戳列表从 timedelta 转换为可读的字符串格式
Convert list of time stamps from timedelta to readable string format
我想做的是获取两个时间戳列表,找到相应时间戳对之间的差异,然后将差异打印为另一个列表。当我打印最终的时差列表时,我得到了这个:
[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 还很陌生,因此非常感谢任何其他关于改进 and/or 改变任何其他内容的建设性意见。谢谢!
列表元素将使用 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']
这应该会给你一个更易读的格式:
[((datetime.datetime.strptime('00:00:00', format))+e).strftime(format) for e in list3]
Out[340]: ['00:45:00', '00:30:00']
这是一个开始。在 Python 中,当您遍历序列时不需要计数器,因此不需要变量 i
和 k
。正如 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)]
我想做的是获取两个时间戳列表,找到相应时间戳对之间的差异,然后将差异打印为另一个列表。当我打印最终的时差列表时,我得到了这个:
[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 还很陌生,因此非常感谢任何其他关于改进 and/or 改变任何其他内容的建设性意见。谢谢!
列表元素将使用 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']
这应该会给你一个更易读的格式:
[((datetime.datetime.strptime('00:00:00', format))+e).strftime(format) for e in list3]
Out[340]: ['00:45:00', '00:30:00']
这是一个开始。在 Python 中,当您遍历序列时不需要计数器,因此不需要变量 i
和 k
。正如 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)]