Tom: Timestamp für Wochenbeginn und -ende errechnen

Beitrag lesen

Hello,

Viel Spaß beim Knobeln ;-)

ist wirklich keine triviale Aufgabe mit den vorhandenen Funktionen.
Jedenfalls habe ich gestern noch ein paarmal im Kreis herumgedacht.
Im Prinzip wird es am günstigsten sein, wenn man sich eine Liste generieren lässt.

anfangen vom 01.01. des Jahres
Array aufbauen für mindestens 7 Tage.
Den Sonntag suchen.
Auf denn Sonntag folgt automatisch der Montag (zum Glück)
Die KWs dazu bestimmen.
Array mit den KWs aufbauen (entweder 52 oder 53) * 2 (für Montag und Sonntag) [1]
  indem man einfach immer 7 Tage draufzählt mit strtotime()
und dann mittels des Denkansatzes aus dem anderen Posting

$zeit1 = strtotime('01.01.2007 00:00');
  echo $zeit1."<br>\n";
  echo date ('d.m.Y H:i:s', $zeit1)."<br>\n";

die exakten Timestamps bestimmen.

Das gesamte Array dann serialisieren und als Datei abspeichern für das Jahr.
Beim nächsten Zugriff steht diese Datei dann zur Verfügung und muss nicht jedes Mal neu berechnet werden. Allerdings habe ich nicht ausprobiert, was länger dauert: Dateizugriff + Deserialisieren oder neu berechnen.

[1] oder eben gleich für das ganze Jahr einen Kalender aufbauen mit allen relevanten Daten
$_calendar['date'][1]            ## Y-m-d  damit es sortierfähig ist
          ['kw'][1]              ## zu welcher KW gehört der Tag
          ['dayofweek'][1]       ## Nummer des Wochentages 1 = Montag 7 = Sonntag o.ä.
          ['dayofmonth'][1]      ## Nummer des Tages im Monat 1..31
          ['month'][1]           ## Nummer des Monats 1..12
          ['min_timestamp'][1]   ## Zeitstempel um 00:00:00
          ['max_timestamp'][1]   ## Zeitstempel um 23:59:59

$_calendar['date'][2]
          ['kw'][2]
          ['dayname'][2]
          ['dayofmonth'][2]
          ['month'][2]
          ['min_timestamp'][2]
          ['max_timestamp'][2]

Der index steht für 'dayofyear'

Man kann so das Array einmal berechnen, nach allen Spalten sortieren lassen, serialisieren und abspeichern. Dadurch hat man dann nach dem Laden und deserialisieren immer gleich direkten Zugriff auf alle zusammengehörigen Daten jeden Tages über die Arrayfunktionen und den Index.

Für solche wiederkehrenden Aufgaben sind Listen manchmal der praktikablere Weg.

Wenn einer Lange Weile hat, könnte er/sie ja mal teten, wie lange die Berechnung der gesamten Liste im Mittel dauert.

Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)