Muszę wiedzieć, jak mogę obliczyć datę następnego piątku? Jestem nowy w Pythonie :)Jak obliczyć następny piątek w Pythonie?
Dzięki!
Muszę wiedzieć, jak mogę obliczyć datę następnego piątku? Jestem nowy w Pythonie :)Jak obliczyć następny piątek w Pythonie?
Dzięki!
Aby rozpocząć, musisz się datetime
Biblioteka:
import datetime
to trzeba datę początkową; to jest dzisiaj.
d = datetime.date.today()
Zaczynając od tego, będziesz chciał iść dalej, aż dotrzesz do piątku. Metoda date.weekday
reprezentuje poniedziałku do niedzieli jako 0 do 6, więc:
while d.weekday() != 4:
Jeśli bieżący dzień nie jest piątek, będziesz musiał dodać dzień, jeden na raz. Aby dodać interwał czasu do obiektu date
, należy użyć obiektu timedelta
.
d += datetime.timedelta(1)
umieścić to wszystko razem, a d
ostatecznie zawierać date
obiekt reprezentujący najbliższy piątek. Zwróć uwagę, że jeśli dzisiaj jest piątek, ten kod pojawi się dzisiaj; możesz go ulepszyć, jeśli potrzebujesz go do produkcji w następny piątek.
Dziękujemy! Bardzo pomocny – KennyPowers
@rolikoff FYI, gdy otrzymasz odpowiedź, która ci pomoże, możesz ją zaakceptować, klikając znacznik wyboru (patrz [faq # howtoask]). – Taymon
Głosowano, ponieważ odpowiedź @ ugoren'a (ze zmianą proponowaną w komentarzach) jest zdecydowanie lepsza –
Pewna poprawa na @ taymon`s odpowiedź:
today = datetime.date.today()
friday = today + datetime.timedelta((4-today.weekday()) % 7)
4 jest Piątkowy dzień tygodnia (0 oparte, licząc od poniedziałku).
((4-today.weekday()) % 7)
to liczba dni do następnego piątku (%
jest zawsze nieujemna).
Po zobaczeniu odpowiedzi @ ubuntu powinienem dodać dwie rzeczy:
1. Nie jestem pewien, czy piątek = 4 jest powszechnie prawdziwy. Niektórzy zaczynają swój tydzień w niedzielę.
2. W piątek kod ten zwraca ten sam dzień. Aby uzyskać następny, użyj (3-today.weekday())%7+1
. Tylko stara konwersja x%n
do ((x-1)%n)+1
.
Piątek zawsze wynosi 4, gdy używa się ['weekday()'] (http://docs.python.org/library/datetime.html#datetime .date.weekday) metoda. Metoda ['isoweekday()'] (http://docs.python.org/library/datetime.html#datetime.date.isoweekday) daje piątek jako 5, ponieważ traktuje od poniedziałku do niedzieli jako 1 do 7. – Taymon
You może używać 'calendar.FRIDAY' zamiast' 4', jeśli nie masz nic przeciwko dodawaniu 'import calendar'. – lumbric
Oto w jaki sposób można to zrobić za pomocą dateutil: (. Na days = 1
argumentem zapewnia, że „następny piątek” nie jest taka sama jak today
w przypadku today
dzieje się w piątek)
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
Czy to zadanie domowe? –
Nie :) chcę tylko wiedzieć, jak najlepiej to zrobić. Wiem, że coś takiego jak Dateutil może pomóc, ale nie wiem, czy warto z niego korzystać, czy nie. – KennyPowers
Dlaczego ludzie zawsze pytają, czy to praca domowa? Powtarza się; jaka to różnica? – HexTree