#!/usr/bin/php jahr = $jahr; /* 0 = Stunde, Minute, Sekunde 1 = Monat, Tag */ $neujahrsSekunde = mktime(0,0,0,1,1,$jahr); /* 367 Tage pro Jahr + ggf. Schaltjahr + "1 Sicherheitstag" 24 Stunden pro Tag 60 Minuten pro Stunde 60 Sekunden pro Minute */ $jahresEndeSekunde = $neujahrsSekunde + 367 * 24 * 60 * 60; // Die Tage des Jahre auf Sekundenbasis durchlaufen for ($aktuelleSekunde = $neujahrsSekunde; $aktuelleSekunde < $jahresEndeSekunde; $aktuelleSekunde += 24 * 60 * 60) { // Zählsekunde in Array mit Informationen über Wochentag etc. umwandeln $tagArray = getdate($aktuelleSekunde); // Abbruch, wenn das Datum nicht gültig ist if (!(checkdate($tagArray['mon'], $tagArray['mday'], $jahr))) break; // In's falsche Jahr gerutscht? if ($tagArray['year'] != $jahr) break; $this->kalenderArray[$tagArray['mon']][$tagArray['mday']]['MonatsName'] = $this->monatsNamen[$tagArray['mon']]; $this->kalenderArray[$tagArray['mon']][$tagArray['mday']]['TagesZahl'] = $tagArray['mday']; $this->kalenderArray[$tagArray['mon']][$tagArray['mday']]['WochentagsName'] = $this->wochenTage[$tagArray['wday']]; $this->kalenderArray[$tagArray['mon']][$tagArray['mday']]['WochentagsZahl'] = $tagArray['wday']; $this->kalenderArray[$tagArray['mon']][$tagArray['mday']]['Kalenderwoche'] = date("W",$aktuelleSekunde); // print($this->monatsNamen[$tagArray['mon']].' '.$this->wochenTage[$tagArray['wday']].' '.$tagArray['mday']."\n"); } } // Kalender in Textform ausgeben public function textKalender() { // Alle Monate durchlaufen foreach ($this->kalenderArray as $monat) { // Spalte, in die aktuell ein Tag geschrieben wird $spalte = 0; // Den Monatsnamen ausgeben print("\n\n".$monat[1]['MonatsName']."\n"); // Wochentagsnamen als Überschrift for ($i=1; $i < 15; $i ++) print($this->wochenTage[$i%7]."\t"); print("\n"); // Wochentage mit Platzhaltern füllen, die im vorangegangenen Monat liegen for ($i = 0; $i < ($monat[1]['WochentagsZahl'] +6) %7; $i++) { print("\t"); $spalte++; } foreach ($monat as $tag) { print($tag['TagesZahl']."\t"); $spalte++; if (($spalte % 14) == 0) print("\n"); } } } // CSS-Farbe und -Textstil für den Tag ermitteln private function tagesFarbe($tagesNummer) { $tagesNummer = $tagesNummer % 14; return((($tagesNummer == 5) || ($tagesNummer == 6) || ($tagesNummer == 12) || ($tagesNummer == 13)) ? 'style="color:red; font-weight: bold;"' : 'colour="style="color:black; font-weight: normal;"'); } // Kalender als HTML ausgeben public function htmlKalender() { print('
KW | '); // Wochentagsnamen als Überschrift for ($i=1; $i < 15; $i ++) print(''.$this->wochenTage[$i%7]." | "); // Neue Zeile für die ersten Tageseinträge und die Kalenderwoche print("|
---|---|---|
".$monat[1]['Kalenderwoche']." | "); // Wochentage mit Platzhaltern füllen, die im vorangegangenen Monat liegen for ($i = 0; $i < ($monat[1]['WochentagsZahl'] +6) %7; $i++) { print(""); $spalte++; } foreach ($monat as $tag) { $farbe = $this->tagesFarbe($spalte); print(" | ".$tag['TagesZahl']." | "); $spalte++; if (($spalte % 14) == 0) { // +1, da eine neue Kalenderwoche immer mit einem Montag (=1) anfängt print("
".$monat[$tag['TagesZahl']+1]['Kalenderwoche']." | "); } } print('