Мне нужно знать, как я могу рассчитать дату следующей пятницы? Я новичок в Python :)Как рассчитать следующую пятницу в Python?
Спасибо!
Мне нужно знать, как я могу рассчитать дату следующей пятницы? Я новичок в Python :)Как рассчитать следующую пятницу в Python?
Спасибо!
Для начала, вам понадобится datetime
библиотеки:
import datetime
Затем вам нужна отправная дата; то есть сегодня.
d = datetime.date.today()
Начиная с этого момента вы будете продолжать идти вперед, пока не достигнете пятницы. Метод date.weekday
представляет с понедельника по воскресенье, как 0 до 6, так:
while d.weekday() != 4:
Если текущий день не пятницу, вы должны добавить в день, по одному за раз. Чтобы добавить интервал времени к объекту date
, вы используете объект timedelta
.
d += datetime.timedelta(1)
Положите все это вместе, и d
будет в конечном счете содержать date
объект, представляющий следующую пятницу. Обратите внимание, что если сегодня пятница, этот код будет производить сегодня; вы можете настроить его, если вам понадобится, чтобы произвести следующую пятницу вместо этого.
Спасибо! Очень полезно – KennyPowers
@rolikoff FYI, когда вы получите ответ, который поможет вам, вы можете принять его, нажав галочку (см. [Faq # howtoask]). – Taymon
Проголосовало, потому что ответ @ ugoren (с изменением, предложенным в комментариях) строго лучше –
Некоторое улучшение на @ taymon`s ответа:
today = datetime.date.today()
friday = today + datetime.timedelta((4-today.weekday()) % 7)
4 является будним днем в пятницу (0 основы, считая с понедельника).
((4-today.weekday()) % 7)
- это количество дней до следующей пятницы (%
всегда неотрицательно).
После просмотра ответа ubuntu я должен добавить две вещи:
1. Я не уверен, что пятница = 4 является универсальной истиной. Некоторые люди начинают свою неделю в воскресенье.
2. В пятницу этот код возвращает тот же день. Чтобы получить следующий, используйте (3-today.weekday())%7+1
. Только старые x%n
до ((x-1)%n)+1
преобразования.
Пятница всегда 4 при использовании ['weekday()'] (http://docs.python.org/library/datetime.html#datetime .date.weekday) способ. Метод ['isoweekday()') (http://docs.python.org/library/datetime.html#datetime.date.isoweekday) дает пятницу как 5, потому что он рассматривает с понедельника по воскресенье с 1 по 7. – Taymon
You может использовать 'calendar.FRIDAY' вместо' 4', если вы не возражаете добавить «календарь импорта». – lumbric
Вот как вы могли бы сделать это с помощью dateutil: (. days = 1
аргумент гарантирует, что «в следующую пятницу» не то же самое, как today
в случае today
случается, пятница)
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
Это домашнее задание? –
Нет :) просто хочу знать, как это сделать. Я знаю, что есть что-то вроде dateutil, которые могли бы это сделать, но не уверены, стоит ли это использовать или нет. – KennyPowers
Почему люди всегда спрашивают, является ли это домашней работой? Он становится повторяющимся; какая разница? – HexTree