有没有更好的方法从列表中检索日期时间对象?

时间:2019-01-22 03:25:02

标签: python datetime

编辑:此处更新了代码示例,https://repl.it/@HexKiz/FussyQuietPetabyte

import datetime

从日期时间导入日期时间起

emp_history = {     1:['Vox',datetime.datetime(2001,1,2,0,1),datetime.datetime(2002,1,2,0,1),1.0],     2:['telly',datetime.datetime(2001,1,2,0,1),datetime.datetime(2002,1,2,0,1),1.0] }

def print_all(dict_emp_history):     #从1-> last排序键并打印所有记录     对于x中的sorted(dict_emp_history.keys()):

    # Get Tuple Values
    name = ([x[0] for x in dict_emp_history.values()])
    start = ([x[1] for x in dict_emp_history.values()])
    start = datetime.datetime.strptime(str(start), '%Y%M%d')

    end = ([x[2] for x in dict_emp_history.values()])
    total = ([x[3] for x in dict_emp_history.values()])
    print('---------------')
    print('This is record: {}'.format(x))
    print(dict_emp_history[x])
    print('{}   -Start:   {}  -End:   {}  -Total:   {}'.format(name, start, end, total))
    print('---------------')

def main():     print_all(emp_history)

main()


忽略了从列表中检索值将其作为列表项返回的问题。 有问题的值是datetime对象。da​​tetime.datetime(2001,1,8,0,9)。

我需要做的是检索datetime对象并将其打印为字符串,这样看起来像2018.01.20这样。我知道您可以使用strftime,但是我不断收到错误提示,该值不是datetime对象。

这是否意味着我必须将列表转换为字符串,然后再转换为日期时间对象?

当然必须有更好的方法。


import datetime


td = {
    1: ('hex', datetime.datetime(2001, 1, 8, 0, 9), datetime.datetime(2002, 1, 8, 0, 5), 0.9999923896499239),
    2: ('hex', datetime.datetime(2001, 1, 8, 0, 9), datetime.datetime(2002, 1, 8, 0, 5), 0.9999923896499239)
}

print(td)

value = ([x[2] for x in td.values()])



print(value)
print(type(value))

{1: ('hex', datetime.datetime(2001, 1, 8, 0, 9), datetime.datetime(2002, 1, 8, 0, 5), 0.9999923896499239), 2: ('hex', datetime.datetime(2001, 1, 8, 0, 9), datetime.datetime(2002, 1, 8, 0, 5), 0.9999923896499239)}
[datetime.datetime(2002, 1, 8, 0, 5), datetime.datetime(2002, 1, 8, 0, 5)]
<class 'list'>

我希望var命名值的类型为datetime对象类型。

1 个答案:

答案 0 :(得分:0)

您正在将列表理解的结果分配给 value 。正如Tomothy32在其评论中指出的那样, value 是日期时间对象的列表。

关于从列表中检索日期时间对象并将其打印为字符串的方法,以下代码应该可以完成您的期望:

value = ([str(x[2]) for x in td.values()])

上面的输出是:

['2002-01-08 00:05:00', '2002-01-08 00:05:00']

希望这会有所帮助。