如何在Python中找到下个月的第n天?

Joh*_*ton 4 python datetime

我试图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.我还尝试添加一个月到今天并试图到达本月的第一天.我相信有一种更有效的方法可以做到这一点.

Jon*_*nts 7

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)


sen*_*hin 6

这应该是直截了当的,除非我在你的问题中遗漏了一些内容:

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另一个答案的建议使用比这更好的想法.