我有一个列表,其中包含一个代表时间戳的字符串,我需要将其转换为日期格式,本质上是剥离时间戳的时间部分(稍后将其插入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']]
答案 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']]