我正在尝试找到一种创建日期列表的有效方法,该列表仅包括给定时间段的一个月的第一天。像这样但更好的东西:
import datetime
dates = [
datetime.date (2014, 4, 1),
datetime.date (2014, 5, 1),
datetime.date (2014, 6, 1),
datetime.date (2014, 7, 1),
datetime.date (2014, 8, 1),
datetime.date (2014, 9, 1),
datetime.date (2014, 10, 1),
datetime.date (2014, 11, 1),
datetime.date (2014, 12, 1),
datetime.date (2015, 1, 1),
datetime.date (2015, 2, 1)]
或者,一些关于谷歌的方向。干杯!
最佳答案
>>> startyear = 2014
>>> startmonth = 4
>>> endyear = 2015
>>> endmonth = 2
>>> [datetime.date(m/12, m%12+1, 1) for m in xrange(startyear*12+startmonth-1, endyear*12+endmonth)]
[datetime.date(2014, 4, 1), datetime.date(2014, 5, 1), datetime.date(2014, 6, 1), datetime.date(2014, 7, 1), datetime.date(2014, 8, 1), datetime.date(2014, 9, 1), datetime.date(2014, 10, 1), datetime.date(2014, 11, 1), datetime.date(2014, 12, 1), datetime.date(2015, 1, 1), datetime.date(2015, 2, 1)]
对于 Python 3,您需要使用
range
而不是 xrange
, 和 //
( floor division ) 而不是 /
(它在 Python 3 中进行 float 除法):[datetime.date(m//12, m%12+1, 1) for m in range(startyear*12+startmonth-1, endyear*12+endmonth)]
关于给定期间每月第一天的 Python 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22696662/