1

这里有点新手。

我有一个从 MySQL 数据库中获取结果的程序。它挑选出字段 Id 和 ship_date,查询仅根据给定的 Id 搜索返回的记录。结果应该是 2 个或更多日期。我的目标是格式化日期并比较它们之间的日期。结果被放入单独的列表中,所以我得到两个这样的列表:

[(datetime.datetime(2012, 12, 28, 0, 0),), (datetime.datetime(2012, 12, 28, 0, 0),)]

[(datetime.datetime(2012, 06, 15, 0, 0),), (datetime.datetime(2012, 08, 19, 0, 0),)]

例如。

但是,当我尝试使用一段代码将整个列表转换为可读格式时,我发现:

ship_date = [dt.strftime("%Y-%m-%d") for dt in ship_date]

我总是收到一个错误,即没有属性 strftime。我尝试将它们转换为字符串,然后使用 strftime,但我得到 str 没有属性 strftime 的错误。我完全不知所措。

顺便说一句,我已经导入了日期时间

有没有人有任何方法可以将这些列表(其中 2 个)转换为可读格式,例如

2012-12-28, 2012-12-28

谢谢

4

1 回答 1

1

给定的列表包含带有日期时间的元组,而不仅仅是日期时间。所以物品应该被拆开包装。

>>> ship_dates = [(datetime.datetime(2012, 12, 28, 0, 0),), (datetime.datetime(2012, 12, 28, 0, 0),)]
>>> [dt.strftime("%Y-%m-%d") for dt in ship_dates]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'strftime'

>>> [dt.strftime("%Y-%m-%d") for (dt,) in ship_dates]
['2012-12-28', '2012-12-28']

或者你可以省略(..)

>>> [dt.strftime("%Y-%m-%d") for dt, in ship_dates]
['2012-12-28', '2012-12-28']
于 2013-10-30T07:49:54.120 回答