签出from dateutil.relativedelta import *
为日期添加特定时间的内容,您可以继续使用timedelta
简单的内容,例如
use_date = use_date + datetime.timedelta(minutes=+10)
use_date = use_date + datetime.timedelta(hours=+1)
use_date = use_date + datetime.timedelta(days=+1)
use_date = use_date + datetime.timedelta(weeks=+1)
或者您可以开始使用 relativedelta
use_date = use_date+relativedelta(months=+1)
use_date = use_date+relativedelta(years=+1)
下个月的最后一天:
use_date = use_date+relativedelta(months=+1)
use_date = use_date+relativedelta(day=31)
现在,这将提供2016年2月29日
下个月倒数第二天:
use_date = use_date+relativedelta(months=+1)
use_date = use_date+relativedelta(day=31)
use_date = use_date+relativedelta(days=-1)
下个月的最后一个星期五:
use_date = use_date+relativedelta(months=+1, day=31, weekday=FR(-1))
下个月的第二个星期二:
new_date = use_date+relativedelta(months=+1, day=1, weekday=TU(2))
正如@ mrroot5指出的那样,rrule
可以使用dateutil的功能,如果您需要日期出现,则可以为您带来更多的收益。 例如: 从上个月的最后一天开始计算9个月的月份的最后一天。 然后,计算每个月的第二个星期二。
from dateutil.relativedelta import *
from dateutil.rrule import *
from datetime import datetime
use_date = datetime(2020,11,21)
#Calculate the last day of last month
use_date = use_date+relativedelta(months=-1)
use_date = use_date+relativedelta(day=31)
#Generate a list of the last day for 9 months from the calculated date
x = list(rrule(freq=MONTHLY, count=9, dtstart=use_date, bymonthday=(-1,)))
print("Last day")
for ld in x:
print(ld)
#Generate a list of the 2nd Tuesday in each of the next 9 months from the calculated date
print("\n2nd Tuesday")
x = list(rrule(freq=MONTHLY, count=9, dtstart=use_date, byweekday=TU(2)))
for tuesday in x:
print(tuesday)
Last day
2020-10-31 00:00:00
2020-11-30 00:00:00
2020-12-31 00:00:00
2021-01-31 00:00:00
2021-02-28 00:00:00
2021-03-31 00:00:00
2021-04-30 00:00:00
2021-05-31 00:00:00
2021-06-30 00:00:00
2nd Tuesday
2020-11-10 00:00:00
2020-12-08 00:00:00
2021-01-12 00:00:00
2021-02-09 00:00:00
2021-03-09 00:00:00
2021-04-13 00:00:00
2021-05-11 00:00:00
2021-06-08 00:00:00
2021-07-13 00:00:00
这绝不是可用资源的详尽列表。可在此处找到文档:https ://dateutil.readthedocs.org/en/latest/