day = "13/Oct/2013"
print("Parsing :",day)
day, mon, yr= day.split("/")
sday = yr+" "+day+" "+mon
myday = time.strptime(sday, '%Y %d %b')
Sstart = yr+" "+time.strftime("%U",myday )+" 0"
Send = yr+" "+time.strftime("%U",myday )+" 6"
startweek = time.strptime(Sstart, '%Y %U %w')
endweek = time.strptime(Send, '%Y %U %w')
print("Start of week:",time.strftime("%a, %d %b %Y",startweek))
print("End of week:",time.strftime("%a, %d %b %Y",endweek))
print("Data entered:",time.strftime("%a, %d %b %Y",myday))
out:
Parsing : 13/Oct/2013
Start of week: Sun, 13 Oct 2013
End of week: Sat, 19 Oct 2013
Sun, 13 Oct 2013
Ich habe Python in den letzten 2 Tagen gelernt und mich gefragt, ob es einen saubereren Weg gibt, dies zu tun. Diese Methode funktioniert ... es sieht einfach hässlich aus und es scheint albern, für jedes Datum eine neue Zeitvariable erstellen zu müssen, und das sollte es auch Es ist eine Möglichkeit, das angegebene Datum durch einen einfachen Anruf auf den Anfang und das Ende der Woche zu verschieben, aber ich konnte im Internet oder in der Dokumentation nichts finden, was so aussieht, als würde es funktionieren.
Antworten:
Verwenden Sie das
datetime
Modul.Dies ergibt Anfang und Ende der Woche (von Montag bis Sonntag):
from datetime import datetime, timedelta day = '12/Oct/2013' dt = datetime.strptime(day, '%d/%b/%Y') start = dt - timedelta(days=dt.weekday()) end = start + timedelta(days=6) print(start) print(end)
BEARBEITEN:
print(start.strftime('%d/%b/%Y')) print(end.strftime('%d/%b/%Y'))
quelle
start = dt - timedelta(days = (dt.weekday() + 1) % 7)
sollte funktionieren.day = '12/10/2013 13:43:43'
?from datetime import datetime
und NICHTimport datetime
Leichte Abweichung, wenn Sie die Standardzeitformatierung beibehalten und sich auf den aktuellen Tag beziehen möchten:
from datetime import datetime, timedelta today = datetime.now().date() start = today - timedelta(days=today.weekday()) end = start + timedelta(days=6) print("Today: " + str(today)) print("Start: " + str(start)) print("End: " + str(end))
quelle
Verwenden Sie das Pendelmodul :
today = pendulum.now() start = today.start_of('week') end = today.end_of('week')
quelle
pendulum.week_starts_at(pendulum.SUNDAY)
und hinzufügenpendulum.week_ends_at(pendulum.SATURDAY)
, sollten Sie in der Lage sein, mit den Methodenstart_of()
und die richtigen Daten zu erhaltenend_of()
. Ich bin mir nicht sicher, ob dies der richtige Weg ist, aber es scheint in meinen Tests zu funktionieren.