如何用Python确定上周五的日期

如何用Python确定上周五的日期

在这篇文章中,我们将学习如何使用Python确定上周五的日期。

使用的方法

以下是完成这项任务的各种方法

  • 使用datetime模块

  • 使用dateutil包

方法1:使用Datetime模块

算法(步骤)

以下是执行所需任务时需要遵循的算法/步骤。-

  • 使用import关键字从datetime模块导入 datetime、timedelta

  • 创建一个变量来存储一周内所有的日子 (工作日) 的列表

  • 创建一个函数 getPreviousByDay() ,通过接受输入日,start_date=None作为参数来返回输入日的最后一个工作日。

  • 使用 if条件 语句来检查开始日期是否为无。

  • 将今天的日期(当前日期)分配给开始日期。

  • 使用datetime模块的 weekday() 函数(返回一个与给定星期对应的整数)获得当前工作日的数字。

  • 使用index()函数获得目标工作日的索引(给定的输入日)。

  • 获取上一周的天数。

  • 使用 if条件 语句检查上述天数变量的结果是否等于0,然后将7赋给天数变量。

  • 否则从当前日期(开始日期)中减去上述天数,得到给定日期的最后一周的日期

  • 返回输入日期的最后一周的日期。

  • 使用datetime的 today()函数打印今天/当前的日期和时间。

  • 通过调用上面定义的 getPreviousByDay() 函数,将输入日作为’星期五’作为参数,打印最后一个星期五的日期。

  • 同样,通过将输入的日期作为’ Monday’和’Wednesday’ 传递 给getPreviousByDay() 函数来打印最后一个星期一和星期三的日期。

例子

下面的程序使用 datetime模块 返回确定上周五/每天的日期。

# importing datetime, timedelta from datetime module
from datetime import datetime, timedelta
# list of days in a week
weekdaysList = ['Monday', 'Tuesday', 'Wednesday', 'Thursday',
                'Friday', 'Saturday', 'Sunday']
# creating a function to return the last weekday of input day by
# accepting the input day, start_date=None as arguments
def getPreviousByDay(inputDay, start_date=None):
   # check whether the start date is None
      if start_date is None:
         # assiging today's date(current date) to the start date
         start_date = datetime.today()
         # getting the weekday number
         dayNumber = start_date.weekday()
         # Get the index of the target weekday
         dayNumberTarget = weekdaysList.index(inputDay)
         # getting the last weekday
         daysAgo = (7 + dayNumber - dayNumberTarget) % 7
      # checking whether the above days ago result is equal to 0
      if daysAgo == 0:
         # assigning 7 to the days ago
         daysAgo = 7
      # Subtract the above number of days from the current date(start date)
      # to get the last week's date of the given day
      targetDate = start_date - timedelta(days=daysAgo)
      # returning the last week's date of the input date
      return targetDate

# printing today's/current date and time
print("Current date and time:", datetime.today())
# printing the last Friday date by calling the above defined
# getPreviousByDay() function by passing inputDay as 'Friday' as an argument
print("Last Friday Date:", getPreviousByDay('Friday'))
# printing the last Monday date
print("Last Monday Date:", getPreviousByDay('Monday'))
# printing the last Wednesday date
print("Last Wednesday Date:", getPreviousByDay('Wednesday'))

输出

在执行过程中,上述程序将产生以下输出 –

Current date and time: 2023-01-01 08:15:35.935826
Last Friday Date: 2022-12-30 08:15:35.936020
Last Monday Date: 2022-12-26 08:15:35.936153
Last Wednesday Date: 2022-12-28 08:15:35.936264

方法2:使用Dateutil包

在这段代码中, 开始日期目标日期 被映射到它们在一周中的相应数字位置(周一为 第0 。然后,为了确定 目标日期 是在多少天前发生的,我们采用了模块化运算。

然后,目标日期是通过从适当的timedelta实例中减去开始日期来确定的。

如果你经常进行这样的日期计算,安装 Python-dateutil 包可能是更好的选择。

下面是一个使用dateutil的 relativedelta() 函数进行同样计算的例子。

dateutil.relativedelta.relativedelta 增加了对以年、月、周或日为单位定义的周期的支持,以及对年、月、日的绝对值的定义能力,而 timedelta 只支持日(和周)。

例子

下面的程序使用 dateutil模块 返回确定上周五和下周五的日期。

# importing datetime from datetime module
from datetime import datetime
# importing relativedelta from dateutil module
from dateutil.relativedelta import relativedelta
from dateutil.rrule import *
# taking the start date as the current date
start_date = datetime.now()
# printing the todays/current date and time
print("Current Date:", start_date)
# printing the Next Friday date
print("Next Friday Date:", start_date + relativedelta(weekday=FR))
# printing the Last Friday date
print("Last Friday Date:", start_date + relativedelta(weekday=FR(-1)))

输出

在执行过程中,上述程序将产生以下输出 –

Current Date: 2023-01-15 08:19:49.267666
Next Friday Date: 2023-01-20 08:19:49.267666
Last Friday Date: 2023-01-13 08:19:49.267666

总结

在这篇文章中,我们学习了如何使用两种不同的方法来获取Python中上周五的日期。我们还实践了如何获取给定输入日的最后一个工作日,以及如何检索给定日的下一个工作日。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Python 教程