如何在Python中更改时间格式?

3 投票
3 回答
3264 浏览
提问于 2025-04-16 14:53

我该如何得到以下这个列表呢?

 [datetime.date(2011, 4, 1), datetime.date(2011, 4, 8), datetime.date(2011, 4, 16), datetime.date(2011, 5, 21)]

变成

['2011-04','2011-05']

它不仅把内容转换成字符串,还去掉了重复的项。

3 个回答

1
>>> dates = [datetime.date(2011, 4, 1), datetime.date(2011, 4, 8), datetime.date(2011, 4, 16), datetime.date(2011, 5, 21)]
>>> set([date.strftime('%Y-%m') for date in dates])
set(['2011-05', '2011-04'])

set 是一个可以把列表变成集合的工具,它会自动去掉重复的元素。[date.strftime('%Y-%m') for date in dates] 是一种叫做列表推导式的写法,它会把每个日期转换成字符串,使用 strftime 函数,并按照“年-月”的格式来显示。

1

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如,有人可能会在使用某个库时,发现它的功能和自己想要的有点不一样。这种情况下,大家通常会去网上查找解决方案,像StackOverflow这样的网站就是一个很好的地方。

在这些网站上,很多人会分享他们遇到的问题和解决办法。你可以看到各种各样的提问和回答,里面有很多有用的信息。不过,有时候你可能会发现,某些回答并不完全适合你的情况,这就需要你自己去理解和调整。

总之,遇到问题时,不要害怕去寻求帮助,网上有很多资源可以利用。记得多看看别人的经验,这样可以帮助你更快地解决问题。

In [43]: import datetime

In [44]: dates=[datetime.date(2011, 4, 1), datetime.date(2011, 4, 8), datetime.date(2011, 4, 16), datetime.date(2011, 5, 21)]

In [45]: set([date.strftime('%Y-%m') for date in dates])
Out[45]: set(['2011-04', '2011-05'])
6

使用 datetime.date.strftime 将日期转换成字符串。

dates = [date.strftime('%Y-%m') for date in dates]

你可以通过先把列表转换成集合,然后再转换回列表的方式来去掉重复的项。

dates = list(set(dates))

然后把这两种方法结合起来,一步完成所有操作。

dates = list(set([date.strftime('%Y-%m') for date in dates]))

撰写回答