2011-04-01 45 views
3

我如何得到以下列表如何更改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'] 

它不仅转换为字符串,但删除的DUP

回答

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])) 
+0

我首先需要将日期更改为字符串....否则,日期全部不同 – Merlin 2011-04-01 13:23:56

+0

已被弃用? – Merlin 2011-04-01 13:24:40

+0

@ user428862我到了那里。忍耐。 ;) – 2011-04-01 13:25:36

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
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'])