如何用Python查找只有星期一的日期?


在本文中,我们将向您展示如何使用Python查找只有星期一的日期。我们将使用不同的方法查找上一个星期一、下一个星期一以及第n个星期一的日期。

  • 使用timedelta()函数

  • 使用relativedelta()函数获取上一个星期一

  • 使用relativedelta()函数获取下一个星期一

  • 使用relativedelta()函数获取下一个第n个星期一

  • 使用timedelta()函数获取上一个第n个星期一

方法一:使用timedelta

算法(步骤)

以下是执行所需任务的算法/步骤:

  • 使用import关键字导入datetime(用于处理Python日期和时间)模块。

  • 使用today()函数(获取当前本地日期)获取今天的当前本地日期并打印它。

  • 通过将weeks作为参数传递给timedelta()函数(值为1),将今天的日期增加1周。

timedelta() - Python的timedelta()函数在datetime库中可用,通常用于计算日期之间的差值。它也可以用于操作Python中的日期,此函数使用户可以轻松地做到这一点。

语法

Datetime.timedelta(days = 0, seconds = 0, microseconds = 0, milliseconds = 0, minutes = 0, hours = 0, weeks = 0)
  • 打印下一个星期一的日期。

示例

以下程序使用datetime.timedelta()函数返回下一个星期一的日期:

# importing datetime module import datetime # getting today's date todayDate = datetime.date.today() print('Today Date:',todayDate) # Increment today's date with 1 week to get the next Monday nextMonday = todayDate + datetime.timedelta(days=-todayDate.weekday(), weeks=1) print('Next Monday Date:',nextMonday)

输出

执行以上程序后,将生成以下输出:

Today Date: 2022-09-07
Next Monday Date: 2022-09-12

方法二:使用relativedelta()函数获取上一个星期一

timedelta只支持天(和周),而relativedelta允许年、月、周或天,以及提供年、月或日的绝对值。

relativedelta的参数数量比timedelta多得多

relativedelta.relativedelta(self, dt1=None, dt2=None,
years=0, months=0, days=0, leapdays=0, weeks=0, hours=0, minutes=0,
seconds=0, microseconds=0, year=None, month=None, day=None,
weekday=None, yearday=None, nlyearday=None, hour=None, minute=None,
second=None, microsecond=None)

算法(步骤)

以下是执行所需任务的算法/步骤:

  • 使用import关键字导入datetime(用于处理日期和时间)模块。

  • 使用import关键字导入relativedeltaMO来自dateutil模块。

  • 使用today()函数(获取当前本地日期)获取今天的当前本地日期并创建一个变量来存储它。

  • 将星期几作为参数传递给relativedelta()函数。这里的MO(-1)表示获取上周星期一,MO表示星期一。

  • 打印上一个星期一的日期。

示例

以下程序使用relativedelta()函数返回上一个星期一的日期:

# importing date from datetime module from datetime import date # importing relativedelta, MO from dateutil from dateutil.relativedelta import relativedelta, MO # getting today's current local date todayDate = date.today() print('Today Date:',todayDate) # Pass MO(-1) as an argument to relativedelta to set weekday as Monday and -1 signifies last week's Monday lastMonday = todayDate + relativedelta(weekday=MO(-1)) # printing the last Monday date print("The last Monday date:", lastMonday)

输出

Today Date: 2022-09-07
The last Monday date: 2022-09-05

方法三:使用relativedelta()函数获取下一个星期一

这与之前的方法类似,但是这次我们传递参数MO(1)来获取下一个星期一的日期。

示例

# importing date from datetime module from datetime import date # importing relativedelta, MO from dateutil from dateutil.relativedelta import relativedelta, MO # getting today's current local date todayDate = date.today() print('Today Date:',todayDate) # Pass MO(1) as an argument to relativedelta to set weekday as Monday and 1 signifies next week's Monday nextMonday = todayDate + relativedelta(weekday=MO(1)) # printing the Next Monday date print("The Next Monday date:", nextMonday)

输出

Today Date: 2022-09-07
The Next Monday date: 2022-09-12

方法四:使用relativedelta()函数获取下一个第n个星期一

算法(步骤)

以下是执行所需任务的算法/步骤:

  • 给出n的值并将其存储在一个变量中。

  • 将参数MO(n)传递给relativedelta()函数以获取下一个第n个星期一。

  • 打印下一个第n个星期一的值。

示例

from datetime import date # importing relativedelta, MO from dateutil from dateutil.relativedelta import relativedelta, MO # Given n n = 4 # getting today's current local date todayDate = date.today() print('Today Date:',todayDate) # Pass MO(n) as an argument to relativedelta to set weekday as Monday and n signifies nth week's Monday nextNthMonday = todayDate + relativedelta(weekday=MO(n)) # printing the given nth Monday date print(n,"th Monday date from today is:",nextNthMonday)

输出

Today Date: 2022-09-07
4 th Monday date from today is: 2022-10-03

方法五:使用timedelta()函数获取上一个第n个星期一

算法(步骤)

以下是执行所需任务的算法/步骤:

  • 给出n的值并将其存储在一个变量中。

  • 通过将weeks作为参数传递给timedelta()函数(值为n),将今天的日期减少n个星期一。

  • 打印上一个第n个星期一的值。

示例

# importing datetime module import datetime # getting today's date todayDate = datetime.date.today() # Given n n = 4 print('Today Date:',todayDate) # Decrement today's date with n weeks to get the previous nth Monday previousNthMonday = todayDate - datetime.timedelta(days=-todayDate.weekday(), weeks=n) # printing the given nth Monday date print("Previous",n,"th Monday date from today is:",previousNthMonday)

输出

Today Date: 2022-09-07
Previous 4 th Monday date from today is: 2022-08-12

结论

在本文中,我们学习了如何通过五个不同的例子查找星期一的日期,以及如何查找下一个和上一个星期一。

更新于:2023年9月28日

10K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告