在我的配置中我有
SKIP_DATES = ['2016-02-11', '2016-02-13']
然后在我的剧本中我有
if dt.date() in config.SKIP_DATES:
print "Skipping date: {0}".format(dt.date())
continue
但这不起作用,因为dt.date是一个datetime.date对象,而config.SKIP_DATES是一个'字符串日期'列表。
我怎样才能轻松解决这个问题?
有人可以为这篇文章建议一个更好的名字吗?
答案 0 :(得分:0)
您可以将dt
日期时间对象更改为字符串:
from datetime import datetime
date_object = datetime(2016, 2, 11)
print(date_object.strftime("%Y-%m-%d")) % prints string: 2016-02-11
然后检查它是否在日期字符串数组中。或者说它是相反的。
答案 1 :(得分:0)
您的日期格式与date.isoformat()
的格式相同:
date.isoformat()
Return a string representing the date in ISO 8601 format, ‘YYYY-MM-DD’.
For example, date(2002, 12, 4).isoformat() == '2002-12-04'.
所以你可以这样做:
if dt.date().isoformat() in config.SKIP_DATES:
print "Skipping date: {0}".format(dt.date())
continue
请注意datetime.date
的字符串表示使用相同的函数:
date.__str__()
For a date d, str(d) is equivalent to d.isoformat().
这就是print dt.date()
提供'2016-10-31'
输出的原因。当然,您可以使用集合而不是列表来存储跳过日期。