如何在Python中更改时间格式?
我该如何得到以下这个列表呢?
[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]))