Gibt es eine Python-Funktion, um die Anzahl der Freitage oder Donnerstage aus einem Datumsbereich abzuleiten? Ich suchte google und ich fand viele Methoden, die normalerweise Tage geteilt durch Konzept 7 verwenden, aber es gibt Ihnen die genauen Tage nicht. Zum Beispiel von 1/Nov/2016 bis 12/Nov/2016 gibt es zwei Freitage und zwei Donnerstagen, so dass das Ergebnis der Subtraktion 8 sein sollte.So finden Sie die Anzahl der Freitage/Donnerstage im Datumsbereich
Antwort
Verwenden Sie das date
Objekt aus dem datetime
Modul.
from datetime import date, timedelta
curr = date(2016, 11, 1)
end = date(2016, 11, 12)
step = timedelta(1)
num_thur_fri = 0
while curr <= end:
if curr.weekday() in [3,2]: #Friday and thursday
num_thur_fri += 1
curr += step
print(num_thur_fri)
Mehr lesen hier: https://docs.python.org/2/library/datetime.html#module-datetime
@brianpck ist richtig, das ist eine wirklich naive Lösung. Hier ist eine bessere
from datetime import date
begin = date(2016, 11, 1)
end = date(2016, 11, 12)
diff = (begin-end).days
day_of_week = begin.weekday()
num_thur_fri = 2*(diff//7)
for i in range(diff%7):
if day_of_week in [2,3]:
num_thur_fri += 1
day_of_week = (day_of_week +1) %7
Hier ist ein einfacher und schneller Ansatz, der diese Zahl für längere Zeiträume berechnen wird.
Zuerst müssen Sie die Anzahl der Tage zwischen zwei datetime
berechnen. Sie können dann Stock durch 7 teilen, um die Menge ganze Wochen zu erhalten und mit 2 multiplizieren, um die Anzahl der Donnerstage und Freitage zu erhalten. Der letzte Schritt ist das Modulo um sieben, um die Anzahl der Tage am Ende zu berechnen und dann zu berechnen, wie viele davon donnerstags oder freitags sind: Dieser letzte Schritt ist der einzige Schritt, der es tatsächlich erfordert zu wissen, welcher Wochentag es ist.
wäre eine volle Funktion sein:
from datetime import datetime, timedelta
def thursday_fridays_between(date1, date2):
days_between = abs((date2 - date1).days)
thursday_friday = days_between // 7 * 2
thursday_friday += sum((a + timedelta(i)).weekday() in (3, 2) for i in range(days_between % 7 + 1))
return thursday_friday
Es verwendet werden können, wie folgt:
>>> a = datetime(2016, 11, 1)
>>> b = datetime(2016, 11, 12)
>>> thursday_fridays_between(a, b)
4
ich eine Methode herauszufinden, korrigiert mich wenn ich falsch bin.
hier ist mein Code
from datetime import date, timedelta, datetime
curr = "1-11-2016"
end = "30-11-2016"
format = "%d-%m-%Y"
start_date = datetime.strptime(curr, format)
end_date = datetime.strptime(end, format)
step = timedelta(1)
num_thur_fri = 0
off_days = ['Fri','Thu']
days = (end_date - start_date).days
for x in range(days):
day = start_date.strftime("%a")
print(day)
if day in off_days:
num_thur_fri += 1
start_date += step
print(num_thur_fri)
- 1. So finden Sie die Anzahl der Objekte im Heap
- 2. So finden Sie die Anzahl der Methoden in der Klasse
- 3. So finden Sie die Anzahl der Homescreens in Android-Handy
- 4. So finden Sie die Anzahl der Datenbanken in Redis (NodeJS)
- 5. So finden Sie die Summe der Anzahl Layer in NDarray
- 6. So finden Sie die Anzahl der gleichzeitigen SQL Server-Verbindungen
- 7. So finden Sie die Anzahl der Ergebnisse in Knoten js
- 8. So finden Sie die Anzahl der durch Spider scraped Seiten
- 9. gensim word2vec: Finden Sie die Anzahl der Wörter im Vokabular
- 10. So erstellen Sie die Bedingung finden Sie die Anzahl der Datei in der Batch-Datei
- 11. So finden Sie minimale Anzahl von Unterteilungen
- 12. So gruppieren Sie nach Datumsbereich
- 13. So reduzieren Sie die Anzahl der Ballons
- 14. So aktivieren Sie einen Datumsbereich im Bootstrap-Datepicker
- 15. So finden Sie die Anzahl der Tabellen in einer Datenbank und die Größe der Datenbank Pervasive
- 16. finden Sie die Anzahl der offenen Verbindung auf der Datenbank
- 17. Finden Sie alle Daten im Datumsbereich und berechnen Sie die Summe pro Monat
- 18. So erhalten Sie den aktuell angezeigten Datumsbereich im Vollkalender jquery
- 19. Anzahl der Wochentage in einem Datumsbereich berechnen
- 20. Finden Sie die Anzahl der gleichen ganzen Zahlen in Vektor
- 21. Berechne Tage im Datumsbereich ohne die Wochenenden
- 22. So finden Sie die Funktionen der Kantenrichtungsverteilung
- 23. Finden Sie Datumsbereich Überlappung in Python
- 24. Finden Sie die spezifische Anzahl von Array.collect
- 25. Finden Sie die maximale Anzahl der offenen Aufgaben
- 26. Finden Sie die Anzahl der Sonderzeichen in meinem Array Character
- 27. Finden Sie die Anzahl der möglichen binären Suchbaum
- 28. Finden Sie die Anzahl der Quadratwurzeln zwischen zwei Zahlen
- 29. So finden Sie Expr #### im Ausführungsplan
- 30. So erhalten Sie Youtube-Videoaufrufe nach Datumsbereich
Dank, ich glaube, Sie das "t" –
vermisste ich mit diesem Ansatz nicht zustimmen: es ist wie 'Summe (Bereich (n))' statt 'n * (n + 1)/2' – brianpck
tatsächlich, wenn Sie vom 1/11/2016 bis zum 10/11/2016 zählen, sollte der Ausgang 3 sein, weil 10 auch Donnerstag ist, aber –