我想要完成的事情非常简单:从一个范围(下面非常不言自明)创建一个循环,将月份插入到日期时间对象中。我知道 %d 需要一个整数,而且我知道“月份”类型是 int...所以我有点困惑为什么我不能替换我的月份变量。这是我的代码:
all_months=range(1,13)
for month in all_months:
month_start = (datetime.date(2010,'%d',1))%month
next_month_begin= datetime.date(2010,'%d',1)%(month+1)
month_end=next_month_begin - timedelta(days=1)
print month_start
print month_end
我做错了什么?
感谢所有帮助!谢谢
最佳答案
这里有一些问题需要修复。
编辑:首先,请注意您的范围,因为您使用month+1来创建next_month_begin,所以您不希望它大于12,否则您会收到错误。
接下来,当您尝试创建日期对象时,您将在使用 (datetime.date(2010,'%d',1))%month
时将月份作为字符串传递。您的代码可能会抛出此错误TypeError:需要一个整数
。
您需要给它代表月份的整数,而不是整数的字符串(1
和 '1'
之间有区别)。这也是一个简单的修复,因为您有名为 month
的变量,它已经是一个整数,只需使用它而不是创建一个字符串。所以你的代码应该是这样的:
month_start = datetime.date(2010,月,1)
我认为您可以弄清楚如何将其应用到您的 next_month_begin
作业中。
最后一个问题是,您需要使用 datetime.timedelta
告诉 Python 在 datetime
模块中查找 timedelta()
函数 - 您的程序当前会给您一个错误,指出 timedelta 未定义。
如果您在应用这些修复程序时遇到任何问题,请告诉我。请务必包含您可能遇到的错误。
关于python - 尝试将列表中的整数插入日期时间对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2349551/