mit der Methode isocalendar der Klasse datetime erhalte ich zu einem
Datum ein Tupel (Jahr, Kalenderwoche, Wochentag).
Aber wie funktioniert der R�ckweg? Ich habe eine Kalenderwoche in
einem bestimmten Jahr und m�chte nun das Datum des ersten Tages der
Woche (Montag) und des letzten Tages (Sonntag) haben.
Weil ich im datetime-Modul nicht f�ndig geworden bin, bin ich auf das
time-Modul ausgewichen und zu dem unten stehenden gekommen. Aber geht
das nicht auch einfacher?
#- *.py -------------------------------------------------------
from datetime import datetime, timedelta
import time
akt_jahr, akt_kw, akt_tag = datetime.now().isocalendar()
montag = datetime.fromtimestamp(time.mktime(
time.strptime('1 %s %s' %
(akt_kw - 1, akt_jahr), '%w %U %Y')))
sonntag = datetime.fromtimestamp(time.mktime(
time.strptime('0 %s %s' %
(akt_kw, akt_jahr), '%w %U %Y')))
print 'Montag', montag
print 'Sonntag', sonntag
#- *.py -------------------------------------------------------
Gr��e,
Andreas
> mit der Methode isocalendar der Klasse datetime erhalte ich zu einem
> Datum ein Tupel (Jahr, Kalenderwoche, Wochentag).
>
> Aber wie funktioniert der Rückweg? Ich habe eine Kalenderwoche in
> einem bestimmten Jahr und möchte nun das Datum des ersten Tages der
> Woche (Montag) und des letzten Tages (Sonntag) haben.
>
> Weil ich im datetime-Modul nicht fündig geworden bin, bin ich auf das
> time-Modul ausgewichen und zu dem unten stehenden gekommen. Aber geht
> das nicht auch einfacher?
Nicht besonders einfach und nicht getestet, kommt aber ohne Umwege über
Strings aus:
from datetime import date, timedelta
def kwspan(year, week):
ref = date(year, 6, 6)
ref_week, ref_day = ref.isocalendar()[1:]
monday = ref + timedelta(days=7*(week-ref_week)-ref_day+1)
sunday = monday + timedelta(days=6)
assert monday.isocalendar() == (year, week, 1)
assert sunday.isocalendar() == (year, week, 7)
return monday, sunday
year, kw, day = date.today().isocalendar()
print kwspan(year, kw)
Peter
am Thu, 17 Dec 2009 01:31:08 +0100 schrieb ich:
> mit der Methode isocalendar der Klasse datetime erhalte ich zu einem
> Datum ein Tupel (Jahr, Kalenderwoche, Wochentag).
>
> Aber wie funktioniert der R�ckweg? Ich habe eine Kalenderwoche in
> einem bestimmten Jahr und m�chte nun das Datum des ersten Tages der
> Woche (Montag) und des letzten Tages (Sonntag) haben.
vergesst es. Gestern abend war ich wohl zu bl�d, blind oder abgelenkt.
Heute vormittag auf dem Weg zum Kunden ist mir eine Idee gekommen und
nun bin ich bei
montag = datetime.strptime('1 %s %s' % (akt_kw-1, akt_jahr),
'%w %U %Y')
sonntag = datetime.strptime('0 %s %s' % (akt_kw, akt_jahr),
'%w %U %Y')
gelandet. So passt es...
Tsch��,
Andreas
> Nicht besonders einfach und nicht getestet, kommt aber ohne Umwege �ber
> Strings aus:
>
> from datetime import date, timedelta
>
> def kwspan(year, week):
> ref = date(year, 6, 6)
> ref_week, ref_day = ref.isocalendar()[1:]
>
> monday = ref + timedelta(days=7*(week-ref_week)-ref_day+1)
> sunday = monday + timedelta(days=6)
Die Montags-Berechnung ist mir jetzt etwas suspekt (nur draufschauen
hilft mir da nicht, m�sste ich mal laufen lassen um es zu verstehen),
aber auf die Sonntags-Berechnung h�tte ich ja nun auch selbst kommen
k�nnen. :-(
Mist, ich brauche mal andere Kunden/Projekte. Ich programmiere viel zu
wenig mit Python. :-((
Danke,
Andreas