Seite 1 von 1

Berechnung aktuelle Kalenderwoche bis Kalenderwoche 52

Verfasst: Donnerstag 22. April 2010, 17:53
von nubie2001
Hi

jemand ne Idee wie ich von der aktuellen Kalenderwoche bis zur letzten Kalenderwoche die Kalenderwoche berechne :D

Code: Alles auswählen

lt = localtime()
strftime("%W",lt)
so krieg ich ja die aktuelle Kalenderwoche und ab da muss ich die anderen ohne Rücklauf bis zum Jahresende berechnen.

Besten Dank.

Verfasst: Donnerstag 22. April 2010, 18:09
von mutetella
Hallo,

versuch' mal

Code: Alles auswählen

import datetime
today = datetime.date.today()
lastday = datetime.date(2010,12,31)
kw = lastday.isocalendar()[1] - today.isocalendar()[1]
Gruß
mutetella

Verfasst: Donnerstag 22. April 2010, 18:11
von Hyperion
Ein Jahr hat doch immer 52 Wochen oder nicht? Insofern wäre das eine einfache Subtraktion ;-)

Alternativ sollte das doch recht einfach sein, da Du Dir nur ein datetime-Object vom 31.12.YYYY erstellen musst:

Code: Alles auswählen

In [18]: present = datetime.now()

In [19]: last = datetime(present.year, 12, 31)

In [20]: last.strftime("%W")
Out[20]: '52'

In [21]: present.strftime("%W")
Out[21]: '16'

In [23]: int(last.strftime("%W")) - int(present.strftime("%W"))
Out[23]: 36

Verfasst: Donnerstag 22. April 2010, 18:25
von mutetella
Hyperion hat geschrieben:Ein Jahr hat doch immer 52 Wochen oder nicht?
Eben nicht. Es gibt auch Jahre mit 53 KW's. Es gibt nur wenige verlässliche Größen bei Kalenderberechnungen...

Woher kommt datetime.now()?

Gruß
mutetella

Verfasst: Donnerstag 22. April 2010, 18:59
von lunar
@mutetella: "from datetime import datetime"

@Hyperion: Lies Wikipedia zu diesem Thema. Die "erste" Kalenderwoche eines Jahres ist nicht so trivial, wie der Name vermuten lässt.

Verfasst: Donnerstag 22. April 2010, 19:18
von nubie2001
Danke erstmal so weit

und wie krieg ich des jetzt hin dass da inner Liste steht:

16
17
18
19
20
21
22
...
52

Verfasst: Donnerstag 22. April 2010, 19:26
von gkuhl
Das steht z.B. im offiziellen Tutorial.

Verfasst: Donnerstag 22. April 2010, 21:04
von mutetella
nubie2001 hat geschrieben:und wie krieg ich des jetzt hin dass da inner Liste steht:
Indem zu Zeile 5 aus meinem Beispiel durch diese ersetzt:

Code: Alles auswählen

kw = range(today.isocalendar()[1], lastday.isocalendar()[1]-1)
bzw. ab Python 3.x

Code: Alles auswählen

kw = list(range(today.isocalendar()[1], lastday.isocalendar()[1]-1))
Gruß
mutetella

Verfasst: Donnerstag 22. April 2010, 23:25
von nubie2001
jo danke habs schon selbst gelöst gehabt war recht easy

Code: Alles auswählen

todayweek = lastday.isocalendar()[1]
lastweek = today.isocalendar()[1]

for week in range(lastweek,todayweek+1):
                self.wfile.write('''<option>'''+str(week)+'''</option>''')

Re: Berechnung aktuelle Kalenderwoche bis Kalenderwoche 52

Verfasst: Dienstag 3. August 2021, 17:52
von peter.stiehlmann
Wenn du in Python mit Datumswerten rechnen musst kann ich die Arrow Library empfehlen: https://arrow.readthedocs.io

Beispiel um einfach an die aktuelle Kalenderwoche zu kommen:

Code: Alles auswählen

arrow.utcnow().isoweekday()
Da Kalenderwochen Berechnen tricky sein kann, anschließen überprüfen ob das was raus kommt auch wirklich stimmt, denn eine KW beginnt nicht zwangsläufig am 01.01 und es gibt Jahre wie z.b. 2026 die 53 KWs haben.
Ich nutze dazu immer einen online Kalender wie diesen hier https://kwheute.de um zu prüfen ob die Werte die ich rausbekomme auch stimmen.

Re: Berechnung aktuelle Kalenderwoche bis Kalenderwoche 52

Verfasst: Dienstag 3. August 2021, 20:03
von __blackjack__
@peter.stiehlmann: `isoweekday()` ist der Wochentag, nicht die Kalenderwoche.

Re: Berechnung aktuelle Kalenderwoche bis Kalenderwoche 52

Verfasst: Dienstag 3. August 2021, 20:32
von peter.stiehlmann
Stimmt da war ich zu schnell, leider kann ich den Beitrag nicht editieren, korrekt wäre:

Code: Alles auswählen

arrow.utcnow().isocalendar()
=> (2019, 3, 6)
Der 2. Wert (Index 1) im Tuple wäre dann die "ISO week number".
Für diesen speziellen Fall braucht man nicht unbedingt arrow, aber wenn man mit dem Datumswerten weiter rumhantieren muss lernt man es schnell zu schätzen.

Re: Berechnung aktuelle Kalenderwoche bis Kalenderwoche 52

Verfasst: Dienstag 3. August 2021, 20:45
von Dennis89
Naja so schnell warst du gar nicht, immer hin hast du auf einen Beitrag von vor 11 Jahren geantwortet :P

Re: Berechnung aktuelle Kalenderwoche bis Kalenderwoche 52

Verfasst: Dienstag 3. August 2021, 20:54
von peter.stiehlmann
Ich sollte eindeutig mehr schlafen :roll: