如何使用Python仅找到星期一的日期?
在本文中,我们将展示如何使用python仅找到星期一的日期。我们使用不同的方法找到上一次星期一、下一次星期一、第n次星期一的日期−
- 使用timedelta()函数
-
使用relativedelta()函数获取上周一
-
使用relativedelta()函数获取下周一
-
使用relativedelta()函数获取下周一
-
使用timedelta()函数获取前n个星期一
阅读更多:Python 教程
方法1:使用timedelta
算法(步骤)
以下是执行所需任务的算法/步骤−
- 使用import关键字导入datetime(用于处理日期和时间)模块。
-
使用today()函数(获取当前本地日期)获取今天的当前本地日期并打印它。
-
通过将周数作为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()函数返回下一个星期一的日期−
# 导入datetime模块
import datetime
# 获取今天的日期
todayDate = datetime.date.today()
print('今天的日期:',todayDate)
# 将今天的日期递增1周以获取下周一
nextMonday = todayDate + datetime.timedelta(days=-todayDate.weekday(), weeks=1)
print('下一周一的日期:',nextMonday)
输出
执行上述程序后,将生成以下输出−
今天的日期:2022-09-07
下一周一的日期:2022-09-12
方法2:使用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关键字,导入dateutil模块中的relativedelta和MO。
-
使用today()函数(获取当前本地日期)获取今天的当前本地日期,并创建一个变量来存储它。
-
将工作日作为参数传递给relativedelta()函数。这里的MO(-1)表示获取上周的星期一,MO表示星期一。
-
打印上周一的日期。
例子
以下程序使用relativedelta()函数返回上周一的日期:
# 从datetime模块导入日期
from datetime import date
# 从dateutil中导入相对时间和MO
from dateutil.relativedelta import relativedelta, MO
# 获取今天的当前本地日期
todayDate = date.today()
print('Today Date:',todayDate)
# 将MO(-1)作为参数传递给relativedelta,将工作日设置为星期一,-1表示上周的星期一
lastMonday = todayDate + relativedelta(weekday=MO(-1))
# 打印上周一的日期
print("The last Monday date:", lastMonday)
输出
Today Date: 2022-09-07
The last Monday date: 2022-09-05
方法3:使用relativedelta()函数获取下周一的日期
这与前一种方法类似,但是这次我们将参数MO(1)传递给函数以获取下周一的日期。
例子
# 从datetime模块导入日期
from datetime import date
# 从dateutil中导入相对时间和MO
from dateutil.relativedelta import relativedelta, MO
# 获取今天的当前本地日期
todayDate = date.today()
print('Today Date:',todayDate)
# 将MO(1)作为参数传递给relativedelta,将工作日设置为星期一,1表示下周的星期一
nextMonday = todayDate + relativedelta(weekday=MO(1))
# 打印下周一的日期
print("The Next Monday date:", nextMonday)
输出
Today Date: 2022-09-07
The Next Monday date: 2022-09-12
方法4:使用relativedelta()函数获取下n个星期一的日期
算法(步骤)
以下是执行所需任务的算法/步骤:
- 将n的值赋给一个变量。
- 将参数MO(n)传递给relativedelta()函数,以获取下一个星期一。
- 打印下一个星期一的值。
例子
# 从datetime模块导入日期
from datetime import date
# 从dateutil中导入相对时间和MO
from dateutil.relativedelta import relativedelta, MO
# 获取今天的当前本地日期
todayDate = date.today()
print('Today Date:',todayDate)
# 定义n的值
n = 2
# 将MO(n)作为参数传递给relativedelta,以获取下2个星期一的日期
nextNMonday = todayDate + relativedelta(weekday=MO(n))
# 打印下2个星期一的日期
print("The next {} Monday date:".format(n), nextNMonday)
输出
Today Date: 2022-09-07
The next 2 Monday date: 2022-09-19
from datetime import date
# 导入relativedelta和MO,从dateutil库中
from dateutil.relativedelta import relativedelta, MO
# 给定n
n = 4
# 获取当前日期
todayDate = date.today()
print('今天的日期:',todayDate)
# 将MO(n)作为参数传递给relativedelta,将周日设置为星期一,其中n表示第n个星期一
nextNthMonday = todayDate + relativedelta(weekday=MO(n))
# 打印给定的第n个星期一的日期
print(n,"天后的第n个星期一的日期是:",nextNthMonday)
输出
今天的日期: 2022-09-07
4 天后的第n个星期一的日期是: 2022-10-03
方法5:使用timedelta()函数来获取前n个星期一
算法(步骤)
要执行所需任务,请按以下算法/步骤进行操作−
- 给变量赋值n的值。
-
通过将周数传递为n的argumnet来使用timedelta()函数将今天的日期减去n周的星期一日期。
-
打印前n个星期一的日期的值。
例
# 导入datetime库
import datetime
# 获取今天的日期
todayDate = datetime.date.today()
# 给定n
n = 4
print('今天的日期:',todayDate)
# 将今天的日期减去n周以获取前n个星期一的日期
previousNthMonday = todayDate - datetime.timedelta(days=-todayDate.weekday(), weeks=n)
# 打印给定的第n个星期一的日期
print("前",n,"天前的第n个星期一的日期是:",previousNthMonday)
输出
今天的日期: 2022-09-07
前 4 天前的第n个星期一的日期是: 2022-08-12
结论
在本文中,我们学习了如何使用五个不同的示例找到星期一的日期,以及如何找到下一个和前一个星期一的日期。
极客教程