我试图delta通过从nth下个月的日期减去今天的日期来获取日期.
delta = nth_of_next_month - todays_date
print delta.days
Run Code Online (Sandbox Code Playgroud)
如何获得下个月的第1天(或第2天,第3天)的日期对象.我尝试从日期对象中取出月份数并将其增加1.这显然是一个愚蠢的想法,因为12 + 1 = 13.我还尝试添加一个月到今天并试图到达本月的第一天.我相信有一种更有效的方法可以做到这一点.
该dateutil库对此非常有用:
from dateutil.relativedelta import relativedelta
from datetime import datetime
# Where day is the day you want in the following month
dt = datetime.now() + relativedelta(months=1, day=20)
Run Code Online (Sandbox Code Playgroud)
这应该是直截了当的,除非我在你的问题中遗漏了一些内容:
import datetime
now = datetime.datetime.now()
nth_day = 5
next_month = now.month + 1 if now.month < 12 else 1 # February
year = now.year if now.month < 12 else now.year+1
nth_of_next_month = datetime.datetime(year, next_month, nth_day)
print(nth_of_next_month)
Run Code Online (Sandbox Code Playgroud)
结果:
2014-02-05 00:00:00
Run Code Online (Sandbox Code Playgroud)
但是,根据dateutil另一个答案的建议使用比这更好的想法.