将列表中的所有日期时间元素转换为日期?

时间:2018-02-02 19:33:47

标签: python datetime python-datetime

该列表包含日期时间元素以及其他元素。

if (params.dirname == ((params.path =~ ~/${params.dirname}/).with { matches() ? it[0] : null })) {
    print success 
} 

我尝试使用没有运气

    java.lang.NoSuchMethodError: No such DSL method 'matches' found among steps 

2 个答案:

答案 0 :(得分:0)

然后在条件表达式中测试对象类型:

[d.date() if isinstance(d, datetime.datetime) else d for d in i]

这会生成一个包含所有值的列表,其中datetime个对象替换为日期:

>>> [d.date() if isinstance(d, datetime.datetime) else d for d in i]
[1127, 1, 2, datetime.date(1900, 1, 1), 'America/NewYork', None, None, datetime.date(1970, 1, 1), datetime.date(9999, 12, 31), 62, 3, ' ', 2, datetime.date(2017, 12, 6)]

如果您想日期,请使用过滤器:

[d.date() for d in i if isinstance(d, datetime.datetime)]

现在我们正在过滤,所以只剩下日期:

>>> [d.date() for d in i if isinstance(d, datetime.datetime)]
[datetime.date(1900, 1, 1), datetime.date(1970, 1, 1), datetime.date(9999, 12, 31), datetime.date(2017, 12, 6)]

答案 1 :(得分:0)

您可以通过在列表推导中添加if语句来排除非日期时间,以检查该值是否为datetime实例:

dates = [d.date() if isinstance(d, datetime.datetime) else d for d in i ]

这将保留所有数据,仅更改日期时间。如果您想过滤掉非日期时间:

dates = [d.date() for d in i if isinstance(d, datetime.datetime)]

在我了解到你可以为理解添加条件之前,我花了一两年的时间玩Python。它非常有用!见这里:

https://www.digitalocean.com/community/tutorials/understanding-list-comprehensions-in-python-3

这篇文章是关于Python 3的,但在大多数情况下,它在Python 2.7中完全相同。