下个星期五怎么算?

Ken*_*ers 26 python datetime

我如何计算下周五的日期?

ugo*_*ren 59

@ taymon的回答有一些改进:

today = datetime.date.today()
friday = today + datetime.timedelta( (4-today.weekday()) % 7 )
Run Code Online (Sandbox Code Playgroud)

4是星期五的工作日(从星期一开始计算0).
( (4-today.weekday()) % 7)是下周五的天数(%总是非负数).

在看到@ ubuntu的回答后,我应该添加两件事:
1.我不确定星期五= 4是否普遍正确.有些人周日开始他们的一周.
星期五,这段代码在同一天返回.要获得下一个,请使用(3-today.weekday())%7+1.就在老x%n((x-1)%n)+1转换.

  • 如果你不介意添加`import calendar`,你可以使用`calendar.FRIDAY`而不是`4`. (9认同)
  • 使用[`weekday()`](http://docs.python.org/library/datetime.html#datetime.date.weekday)方法时,星期五总是4.星期五到星期五是[`isoweekday()`](http://docs.python.org/library/datetime.html#datetime.date.isoweekday)方法,因为它将星期一到星期日视为1到7. (4认同)

Tay*_*mon 32

首先,你需要这个datetime库:

import datetime
Run Code Online (Sandbox Code Playgroud)

那你需要一个开始日期; 就是今天.

d = datetime.date.today()
Run Code Online (Sandbox Code Playgroud)

从那里开始,你要继续前进,直到你到达星期五.该date.weekday方法将周一至周日表示为0到6,因此:

while d.weekday() != 4:
Run Code Online (Sandbox Code Playgroud)

如果当天不是星期五,您必须每天添加一天.要为date对象添加时间间隔,请使用timedelta对象.

    d += datetime.timedelta(1)
Run Code Online (Sandbox Code Playgroud)

把它们放在一起,d最终将包含一个date代表下周五的对象.请注意,如果今天是星期五,则此代码将在今天生成; 你可以调整它,如果你需要它来生产下周五.


unu*_*tbu 20

以下是使用dateutil的方法:

import datetime as DT
import dateutil.relativedelta as REL
today = DT.date.today()
print(today)
# 2012-01-10

rd = REL.relativedelta(days=1, weekday=REL.FR)
next_friday = today + rd
print(next_friday)
# 2012-01-13
Run Code Online (Sandbox Code Playgroud)

(该days = 1参数确保了"下一个星期五"是不一样today的情况下,today恰好是一个星期五).


小智 6

我发现这个钟摆非常有用。就一行

>>> pendulum.now().next(pendulum.FRIDAY).strftime('%Y-%m-%d')
'2019-04-26'
Run Code Online (Sandbox Code Playgroud)