【问题标题】:How to change time formats in python?如何在python中更改时间格式?
【发布时间】:2011-07-27 16:50:10
【问题描述】:

我如何获得以下列表

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

作为

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

它不仅可以转换为字符串,还可以删除重复项

【问题讨论】:

    标签: python string time


    【解决方案1】:

    使用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]))
    

    【讨论】:

    • 我首先需要将日期更改为字符串....否则日期都不同
    • @user428862 我快到了。耐心。 ;)
    • set 模块已被弃用,因为在 2.6 中它已成为内置类。所以,它更像是 Python 的一部分。
    • @judge...作为新手...弃用意味着淘汰...所以,在 2.7 和 3.1 中,我可以使用 set。正确...
    • @user428862 可以,可以继续使用set。重申一下,set 类没有被弃用。它曾经在单独的模块中,但被移到了 Python 中。因此,旧模块已被弃用,而不是 set 类本身。
    【解决方案2】:
    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'])
    

    【讨论】:

      【解决方案3】:
      >>> 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 函数将每个日期转换为字符串。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-23
        • 1970-01-01
        • 2015-12-27
        • 1970-01-01
        • 2021-11-20
        • 2021-05-13
        • 1970-01-01
        相关资源
        最近更新 更多