Python列表批量操作:日期转Unix时间戳返回重复值问题排查
问题原因
- 你的第二段遍历
dates的for循环,没有使用每次迭代取出的date变量,所有转换逻辑固定调用datetime.date.today()获取当日日期计算时间戳,因此每次追加到unixdates的数值完全一致。 - 你代码中
dates列表的日期格式为%Y/%m/%d,而转换时写死了%m/%d/%Y的解析格式,就算用了date变量也会出现格式匹配报错。
修复后代码
import datetime import time from datetime import timedelta now = datetime.datetime.today() dates = [] for x in range(7): d = now - timedelta(days=x) dates.append(d.strftime("%Y/%m/%d")) print(dates) unixdates = [] for date in dates: # 直接使用遍历得到的date变量转换,格式和生成时保持一致 e = time.mktime(datetime.datetime.strptime(date, '%Y/%m/%d').timetuple()) unixdates.append(e) print(unixdates)
优化建议
你完全可以在第一个生成日期的循环中直接计算并存储Unix时间戳,避免日期转字符串、再转回日期的多余开销,示例如下:
now = datetime.datetime.today() dates = [] unixdates = [] for x in range(7): d = now - timedelta(days=x) dates.append(d.strftime("%Y/%m/%d")) unixdates.append(time.mktime(d.timetuple()))
内容的提问来源于stack exchange,提问作者CrossingTheRoad2020
相关产品推荐
相关产品推荐

