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
Appris python au cours des 2 derniers jours et je me demandais s’il existait une méthode plus propre pour le faire. Cette méthode fonctionne ... elle a tout simplement l'air moche et il semble ridicule de devoir créer un nouveau moment variable pour chaque date, et qu’il devrait exister un moyen de décaler la date donnée au début et à la fin de la semaine par un simple appel, mais j’ai été incapable de trouver quoi que ce soit sur Internet ou une documentation qui semble pouvoir fonctionner.
Utilisez le module datetime
.
Cela donnera début et fin de semaine (du lundi au dimanche):
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)
MODIFIER:
print(start.strftime('%d/%b/%Y'))
print(end.strftime('%d/%b/%Y'))
Légère variation si vous souhaitez conserver la mise en forme de l'heure standard et vous reporter au jour actuel:
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))
Utilisez le module pendule
today = pendulum.now()
start = today.start_of('week')
end = today.end_of('week')