将代表时间戳的字符串转换为python列表中的日期格式

时间:2018-10-05 04:21:47

标签: python

我有一个列表,其中包含一个代表时间戳的字符串,我需要将其转换为日期格式,本质上是剥离时间戳的时间部分(稍后将其插入mysql)。我已经尝试了许多不同的方法,但是都没有给我想要的结果。

from datetime import datetime
x = [[7, 25, '2018-09-30T06:45:00'], [14, 18, '2018-09-29T06:45:00']]

def convert(s):
    date_object = datetime.strptime(s, '%Y-%m-%dT%H:%M:%S')
    return date_object.date()

for i in x:
    new_list = [i[0], i[1], ]
    t = convert(i[2])
    new_list.append(t)
    print(new_list)

结果:

[7, 25, datetime.date(2018, 9, 30)]
[14, 18, datetime.date(2018, 9, 29)]

但是,如果我只打印列表中转换后的元素,则会得到所需的日期格式:

[...]
for i in x:
    t = convert(i[2])
    print(t)

结果:

2018-09-30
2018-09-29

我的目标是获得一个包含两个原始元素以及新转换日期的新列表:

old_list = [[7, 25, '2018-09-30T06:45:00'], [14, 18, '2018-09-29T06:45:00']]

new_list = [[7, 25, '2018-09-30'], [14, 18, '2018-09-29']]

2 个答案:

答案 0 :(得分:1)

只需将日期解析为convert函数return语句中的字符串:

return str(date_object.date())

或使用strftime将日期解析为具有所需格式的字符串:

return date_object.strftime("%Y-%m-%d")

答案 1 :(得分:1)

您可以简单地做到这一点

old_list = [[7, 25, '2018-09-30T06:45:00'], [14, 18, '2018-09-29T06:45:00']]

new_list = []

for lst in old_list:
    last_item = lst[-1]
    lst[-1] = last_item[:10]
    new_list.append(lst)

print(new_list)  #[[7, 25, '2018-09-30'], [14, 18, '2018-09-29']]


from datetime import datetime
x = [[7, 25, '2018-09-30T06:45:00'], [14, 18, '2018-09-29T06:45:00']]

def convert(s):
    date_object = datetime.strptime(s, '%Y-%m-%dT%H:%M:%S')
    return date_object.strftime('%Y-%m-%d')

for idx,item in enumerate(x):
    x[idx][-1] = convert(item[2])

print(x) # [[7, 25, '2018-09-30'], [14, 18, '2018-09-29']]