如何在Python中获取下个月的特定日期?

时间:2016-02-17 10:54:13

标签: python python-2.7 date

我正在使用Python 2.7。

我想从现在开始接下来的第25个月。今天是2月17日,所以我应该在2月25日。如果我们在2月26日,我应该在3月25日。

我无法找到关于获得本月下一个特定日期的任何内容,但我确信Python有一些可以让它变得简单。

有谁知道怎么做?

3 个答案:

答案 0 :(得分:3)

您可以使用python-dateutil并使用rrule

import datetime
from dateutil.rrule import * 

now = datetime.datetime.today().date()
days = rrule(MONTHLY, dtstart=now, bymonthday=25)
print (days[0])  # datetime.datetime(2016, 2, 25, 0, 0)
print (days[1])  # datetime.datetime(2016, 3, 25, 0, 0)

答案 1 :(得分:1)

import datetime

def get_next_date_with_day(day_of_the_month):
    today_date = datetime.datetime.today()
    today = today_date.day
    if today == day_of_the_month:
        return today_date
    if today < day_of_the_month:
        return datetime.date(today_date.year, today_date.month, day_of_the_month)     
    if today > day_of_the_month:
        if today_date.month == 12:
            return datetime.date(today_date.year+1, 1, day_of_the_month) 
        return datetime.date(today_date.year, today_date.month+1, day_of_the_month) 

print get_next_date_with_day(25)
>>2016-02-25

答案 2 :(得分:1)

def get_25_th_day(curr_date):

if curr_date.day <= 25:
    return datetime.date(curr_date.year, curr_date.month, 25)
else:
    new_month = curr_date.month + 1
    new_year = curr_date.year
    if curr_date.month == 12:
        new_month = 1
        new_year = curr_date.year + 1

    return datetime.date(new_year, new_month, 25)

print get_25_th_day(datetime.date.today())
>> 2016-02-25
print get_25_th_day(datetime.date(2016, 2, 25))
>> 2016-02-25
print get_25_th_day(datetime.date(2016, 2, 26))
>> 2016-03-25
print get_25_th_day(datetime.date(2016, 12, 26))
>> 2017-01-25