Werner-Zenk.de - Zur Startseite

Berechnungen mit dem Datum ❶

Feiertage, Wochentag, Sonnenauf.- und Sonnenuntergang, Mondphase, Kalenderwoche, Sternzeichen, Namenstage, Schaltjahr, Jahreszeit, …

[Bildschirmfoto] 
Berechnungen mit dem Datum

Die folgenden (41) Funktionen besitzen keinen Status der absoluten Korrektheit, ich habe mich aber bemüht ansatzweise richtige Ergebnisse zu erzeugen. Wer möchte, kann die Funktionen für eigene Zwecke verwenden oder weiterentwickeln.

Weitere Berechnungen mit dem Datum auf Seite

Datumsberechnung

   

Twilight Zone

Sunrise: 05:09
Sunset: 19:20

"Civilian Twilight" start: 04:34
"Civilian Twilight" end: 19:55

"Nautical Twilight" start: 03:50
"Nautical Twilight" end: 20:39

"Astronomical Twilight" start: 03:00
"Astronomical Twilight" end: 21:29

Namenstage

Namenstag am 21 April:  Alexandra, Anselm

Weltzeit



Geburtstage in den nächsten Tagen

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
// Geburtstage in den nächsten Tagen

$tage 14;

 
// Name|Monat|Tag
 // Zahlen immer zweistellig angeben!
$geburtstage = [
 
'Mike|07|01|',
 
'Sabrina|09|01|',
 
'Karlo|27|08|',
 
'Petra|18|09|',
 
'Ronald|04|12|',
 
'Tom|12|01|',
];

$ausgabe "";
for (
$i 0$i != $tage$i++) {
 
$aktuell date("d.m.Y"strtotime("+" $i " day"time()));
 list(
$tag$monat$jahr) = explode("."$aktuell);
 foreach (
$geburtstage as $geburtstag) {
  list(
$name$tag2$monat2$jahr2) = explode("|"$geburtstag);
  if (
$tag2 == $tag && $monat2 == $monat) {
   
$ausgabe .= '<b>$name '</b><br>.  datum($tag$monat$jahr) . '<br><br>';
  }
 }
}
if (
$ausgabe != "") {
 echo 
'<p>Geburtstage in den nächsten ' $tage ' Tagen: ' '<br><br>$ausgabe '</p>';
}
else {
 echo 
'<p>In den nächsten ' $tage ' Tagen<br>hat niemand Geburtstag!</p>';
}

function 
datum($tag$monat$jahr) {
 
$wt getdate(mktime(000$monat$tag$jahr));
 
$tag round($tag);
 
$monat round($monat);
 
$tage = array("Sonntag""Montag""Dienstag""Mittwoch""Donnerstag""Freitag""Samstag");
 
$monate = array(1=>"Januar""Februar""März""April""Mai""Juni""Juli""August""September""Oktober""November""Dezember");
 return 
$tage[$wt["wday"]] . ", " $tag " " $monate[$monat] . " " $jahr;
}
?>

Ausgabe bis zu einem bestimmten Datum

1
2
3
4
5
6
7
8
<?php
// Ausgabe bis zu einem bestimmten Datum

<?php
if ("06.08.2017" <date("d.m.Y")) {
 echo 
"Hallo Welt!";
}
?>

Tipp: Der Zeitgenerator erstellt einen PHP-Quelltext, der an einem selbst bestimmten Tag, einen eingegebenen Text, Bild oder Link anzeigt.

Feiertage

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
// Feiertag
function feiertag($tag$monat$jahr) {
 
$ausgabe "";
 foreach (
feiertage($jahr) as $ftag => $zeitstempel) {
  if (
$zeitstempel == date("U"mktime(000$monat$tag$jahr))) {
   
$ausgabe .= $ftag '<br>';
  }
 }
 return 
$ausgabe;
}

// Feiertage (gesetzliche- kirchliche- und Brauchtumstage)
function feiertage($jahr) {
 
// Die festen Feiertage
 
$ftag["Neujahr"] = mktime(00011$jahr);
 
$ftag["Heilige 3 Könige"] = mktime(00016$jahr);
 
$ftag["Valentinstag"] = mktime(000214$jahr);
 
$ftag["Walpurgisnacht"] = mktime(000430$jahr);
 
$ftag["Tag der Arbeit"] = mktime(00051$jahr);
 
$ftag["Sommersonnenwende"] = mktime(000621$jahr);
 
$ftag["Maria Himmelfahrt"] = mktime(000815$jahr);
 
$ftag["Tag der deutschen Einheit"] = mktime(000103$jahr);
 
$ftag["Erntedankfest"] = strtotime("Sunday October " $jahr);
 
$ftag["Kirchweih"] = strtotime("third Sunday October " $jahr); // Allerweltskirchweih!
 
$ftag["Reformationstag"] = mktime(0001031$jahr);
 
$ftag["Halloween"] = mktime(0001031$jahr);
 
$ftag["Allerheiligen"] = mktime(000111$jahr);
 
$ftag["Martinstag"] = mktime(0001111$jahr);
 
$ftag["Nikolaus"] = mktime(000126$jahr);
 
$ftag["Wintersonnenwende"] = mktime(0001222$jahr);
 
$ftag["Heiligabend"] = mktime(0001224$jahr);
 
$ftag["1. Weihnachtsfeiertag"] = mktime(0001225$jahr);
 
$ftag["2. Weihnachtsfeiertag"] = mktime(0001226$jahr);
 
$ftag["Silvester"] = mktime(0001231$jahr);
 
// Hier weitere Feiertage (Geburtstage etc.) eintragen

 // Zeitumstellung
 
$ftag["Sommerzeit! "] = strtotime('-1 week sun april' $jahr);
 
$ftag["Normalzeit! "] = strtotime('-1 week sun november' $jahr);

 
// Muttertag berechnen
 
$ftag["Muttertag"] = mktime(0005, (14 date("w"mktime(00050$jahr))), $jahr);

 
// Ostersonntag berechnen
 
$ostern strtotime("+ " . (easter_days($jahr)) . " days"mktime(000321$jahr));

 
// Die beweglichen Feiertage, abhängig vom Ostersonntag
 
$ftag["Rosenmontag"] = strtotime("-48 day"$ostern);
 
$ftag["Faschingsdienstag (Fastnacht)"] = strtotime("-47 day"$ostern);
 
$ftag["Aschermittwoch"] = strtotime("-46 day"$ostern);
 
$ftag["Palmsonntag"] = strtotime("-7 day"$ostern);
 
$ftag["Karfreitag"] = strtotime("-2 day"$ostern);
 
$ftag["Ostersonntag"] = strtotime("0 day"$ostern);
 
$ftag["Ostermontag"] = strtotime("+1 day"$ostern);
 
$ftag["Weißer Sonntag"] = strtotime("+7 day"$ostern);
 
$ftag["Ch. Himmelfahrt, Vatertag"] = strtotime("+39 day"$ostern);
 
$ftag["Pfingstsonntag"] = strtotime("+49 day"$ostern);
 
$ftag["Pfingstmontag"] = strtotime("+50 day"$ostern);
 
$ftag["Fronleichnam"] = strtotime("+60 day"$ostern);

 
// Erster Advent berechnen
 
$advent strtotime("+1 sunday",mktime(0,0,0,11,27,$jahr));

 
// Die beweglichen Feiertage, abhängig vom ersten Advent
 
$ftag["1. Advent "] = strtotime("+0 day"$advent);
 
$ftag["2. Advent "] = strtotime("+7 day"$advent);
 
$ftag["3. Advent "] = strtotime("+14 day"$advent);
 
$ftag["4. Advent "] = strtotime("+21 day"$advent);
 
$ftag["Buß- und Bettag "] = strtotime("-11 day"$advent);
 
$ftag["Totensonntag "] = strtotime("last sunday"$advent);
 
$ftag["Volkstrauertag "] = strtotime("-14 day"$advent);
 
asort($ftag);
 return 
$ftag;
}
?>

Beispiel:

<?php
echo feiertag(24, 12, 2018); // Tag, Monat, Jahr
?>

Ausgabe:

Heiligabend

Mondphase

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
// Mondphase berechnen (Umwandlung eines ehemaligen Visual-Basic Scripts)
function mondphase($tag$monat$jahr) {
 
$phase = array("Vollmond""Abnehmender Dreiviertelmond""Letztes Viertel""Abnehmender Halbmond""Neumond""Zunehmender Neumond""Erstes Viertel""Zunehmender Dreiviertelmond");
 
$tag $tag 2;
 
// Wichtige Werte berechnen
 
$jahr $jahr intval((12 $monat) / 10);
 
$monat $monat 9;
 if (
$monat >12) {
  
$monat $monat 12;
 }
 
$k1 intval(365.25 * ($jahr 4712));
 
$k2 intval(30.6 $monat .5);
 
// $julian = Julianisches Datum um 12h UT am gewünschten Tag
 
$julian $k1 $k2 $tag 59;
 
// Synodische Phase berechnen
 
$ynodische_phase = ($julian 2451550.1) / 29.530588853;
 
$ynodische_phase $ynodische_phase intval($ynodische_phase);
 if (
$ynodische_phase < 0) {
  
$ynodische_phase $ynodische_phase 1;
 }
 
// Mondalter in Tagen
 
$mondalter intval($ynodische_phase 29.53);
 if (
$mondalter == || $mondalter == 29) {$aktuellephase 0;}
 else if (
$mondalter >&& $mondalter <6) {$aktuellephase 1;}
 else if (
$mondalter == 7) {$aktuellephase 2;}
 else if (
$mondalter >&& $mondalter <13) {$aktuellephase 3;}
 else if (
$mondalter == 14) {$aktuellephase 4;}
 else if (
$mondalter >15 && $mondalter <21) {$aktuellephase 5;}
 else if (
$mondalter == 22) {$aktuellephase 6;}
 else if (
$mondalter >23 && $mondalter <28) {$aktuellephase 7;}
 else {
$aktuellephase 4;}
 return array(
$phase[$aktuellephase], $mondalter);
}
?>

Beispiel:

<?php
$mond = mondphase(04, 21, 2018); // Monat, Tag, Jahr
echo 'Phase: ' . $mond[0] . ' - Mondalter: ' . $mond[1] . ' Tage';
?>

Ausgabe:

Phase: Zunehmender Neumond - Mondalter: 21 Tage

Sternzeichen

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
// Sternzeichen
function sternzeichen($tag$monat$jahr) {
 
$st date("d"mktime(000$monat$tag$jahr));
 
$sm date("n"mktime(000$monat$tag$jahr));
 if (
$st > 20 && $sm == || $st < 21 && $sm == 4) {$sn 'WIDDER - Aries, 21.3 - 20.4';}
 if (
$st > 20 && $sm == || $st < 21 && $sm == 5) {$sn 'STIER - Taurus, 21.4 - 20.5';}
 if (
$st > 20 && $sm == || $st < 22 && $sm == 6) {$sn 'ZWILINGE - Gemini, 21.5 - 21.6';}
 if (
$st > 21 && $sm == || $st < 23 && $sm == 7) {$sn 'KREBS - Cancer, 22.6 - 22.7';}
 if (
$st > 22 && $sm == || $st < 24 && $sm == 8) {$sn 'LÖWE - Leo, 23.7 - 23.8';}
 if (
$st > 23 && $sm == || $st < 24 && $sm == 9) {$sn 'JUNGFRAU - Virgo, 24.8 - 23.9';}
 if (
$st > 23 && $sm == || $st < 24 && $sm == 10) {$sn 'WAAGE - Libra - 24.9 - 23.10';}
 if (
$st > 23 && $sm == 10 || $st < 23 && $sm == 11) {$sn 'SKORPION - Scorpio, 24.10 - 22.11';}
 if (
$st > 22 && $sm == 11 || $st < 22 && $sm == 12) {$sn 'SCHÜTZE - Sagittarius 23.11 - 21.12';}
 if (
$st > 21 && $sm == 12 || $st < 21 && $sm == 1) {$sn 'STEINBOCK - Capricornus, 22.12 - 20.1';}
 if (
$st > 20 && $sm == || $st < 20 && $sm == 2) {$sn 'WASSERMANN - Aquarius, 21.1 - 19.2';}
 if (
$st > 19 && $sm == || $st < 21 && $sm == 3) {$sn 'FISCHE - Pisces, 20.2 - 20.3';}
 return 
$sn;
}
?>

Beispiel:

<?php
echo sternzeichen(12, 6, 2013); // Tag, Monat, Jahr
?>

Ausgabe:

ZWILINGE - Gemini, 21.5 - 21.6

Sonnenaufgang und Sonnenuntergang

Die Berechnung des Sonnenauf.- und Sonnenuntergangs sind PHP(5) eigene Funktionen date_sunrise(),date_sunset().

Die geografische Länge und Breite des Standorts können Sie z.B. mit dem Programm "Google Earth" ermitteln.
geo. Breite (48.25 - bei "Google Earth" steht z. B.: 48°25'…)
geo. Länge (11.57 - bei "Google Earth" steht z. B.: 11°57'…)
Zenit ~= 90° (Differenzanpassung (+/- Grad) z.B. in den Bergen oder auf Hochhäusern notwendig).

1
2
3
4
5
6
7
8
9
10
<?php
// Sonnenauf.- und Sonnenuntergang
function sunrise($tag$monat$jahr$GEO_BREITE$GEO_LAENGE) {
 
$onnenaufgang date_sunrise(mktime(000$monat$tag$jahr), SUNFUNCS_RET_STRING$GEO_BREITE$GEO_LAENGE90date("O") / 100);
 
$onnenuntergang date_sunset(mktime(000$monat$tag$jahr), SUNFUNCS_RET_STRING$GEO_BREITE$GEO_LAENGE90date("O") / 100);
 return 
'&#9788;&#9650; Sonnenaufgang: ' $onnenaufgang ' Uhr<br>.
  
'&#9788;&#9660; Sonnenuntergang: ' $onnenuntergang ' Uhr <br >.
 
'&#9788;&#9684;  Sonnenscheindauer: ' . (round(str_replace(":""."$onnenuntergang) - str_replace(":""."$onnenaufgang), 2)) . ' Stunden';
}
?>

Beispiel:

<?php
echo sunrise(21, 04, 2018, "49.95", "10.95");
?>

Ausgabe:

☼▲ Sonnenaufgang: 06:14 Uhr
☼▼ Sonnenuntergang: 20:14 Uhr
☼◔ Sonnenscheindauer: 14 Stunden

"Gestern", "Heute", "Morgen"

Siehe auch: Datum und Uhrzeit formatiert ausgeben

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
// Gestern, Heute, Morgen
function gestern_heute_morgen($tag$monat$jahr) {
 
$datum mktime(000date($monat), date($tag), date($jahr));
 if (
$datum == mktime(000date("m"), date("d"), date("Y"))) {
  return 
" Heute";
 }
 elseif (
$datum == mktime(000date("m"), date("d") - 1date("Y"))) {
  return 
" Gestern";
 }
 elseif (
$datum == mktime(000date("m"), date("d") - 2date("Y"))) {
  return 
" Vorgestern";
 }
 elseif (
$datum == mktime(000date("m"), date("d") + 1date("Y"))) {
  return 
" Morgen";
 }
 elseif (
$datum == mktime(000date("m"), date("d") + 2date("Y"))) {
  return 
" Übermorgen";
 }
 elseif (
$datum >mktime(000date("m"), date("d") + 3date("Y"))) {
  return 
" In " intval(($datum mktime(000date("m"), date("d"), date("Y"))) / (3600 24)) . " Tagen";
 }
 elseif (
$datum <mktime(000date("m"), date("d") - 3date("Y"))) {
  return 
str_replace("-"""" Vor " intval(($datum mktime(000date("m"), date("d"), date("Y"))) / (3600 24)) . " Tagen");
 }
}
?>

Beispiel:

<?php
echo gestern_heute_morgen(22, 7, 2017);
?>

Ausgabe:

Vor 273 Tagen

Wochentag

1
2
3
4
5
6
7
8
<?php
// Wochentag
function wochentag3($tag$monat$jahr) {
 
$tage = array("Sonntag""Montag""Dienstag""Mittwoch""Donnerstag""Freitag""Samstag");
 
$wt getdate(mktime(000$monat$tag$jahr));
 return 
$tage[$wt["wday"]];
}
?>

Ausgabe für den 21.4.2018:

Samstag

Arbeitstage

1
2
3
4
5
6
7
8
9
10
11
<?php
// Arbeitstage
function arbeitstage($jahr$monat$anzahl 0) {
 for(
$i 1$i <date("t"mktime(000$monat1$jahr)); $i++) {
  if (
date("w"mktime(000$monat$i$jahr)) != && date("w"mktime(000$monat$i$jahr)) != 6) {
   
$anzahl++;
  }
 }
 return 
$anzahl;
}
?>

Quartal

1
2
3
4
5
6
<?php
// Quartal
function quartal($monat) {
 return (int)((
$monat 1) / 3) + 1;
}
?>

Ausgabe für den Monat 4:

2

Kalenderwoche

Dieses Script zeigt für gewöhnlich die richtige Kalenderwoche an, nur in der letzten Woche des Jahres beziehungsweise ersten Woche des nächsten Jahres stimmt diese nicht.

1
2
3
4
5
6
7
<?php
// Kalenderwoche
function kalenderwoche($tag$monat$jahr) {
 
$zl mktime(000$monat$tag$jahr);
 return 
sprintf("%d"date("W"$zl), date("j.n.Y"strtotime("last Sunday"$zl)), date("j.n.Y"strtotime("+6 day"$zl)));
}
?>

Ausgabe für den 21.4.2018:

16

Kalenderwoche von Montag bis Sonntag

1
2
3
4
5
6
7
<?php
// Kalenderwoche von Montag bis Sonntag
function kalenderwocheStartEnde($jahr$kw) {
 return 
'Montag: ' date("d.m.Y"strtotime('' $jahr '-W' sprintf("%02s"$kw) . '')) . ' bis ' .
        
'Sonntag: ' date("d.m.Y"strtotime('' $jahr '-W' sprintf("%02s"$kw) . '-7'));
}
?>

Ausgabe für Kalenderwoche 16:

Montag: 16.04.2018 bis Sonntag: 22.04.2018

Sommerzeit

1
2
3
4
5
6
7
8
9
<?php
// Sommerzeit
function sommerzeit($tag$monat$jahr) {
return 
"Sommerzeit: " .
 (((
date("I"mktime(200$monat$tag$jahr))) == 1) ? "Ja" "Nein") .
 
" (" date("j.n"mktime(200331 date('w'mktime(200331$jahr)), $jahr)) .
 
" - " date("j.n"mktime(2001031 date('w'mktime(2001031$jahr)), $jahr)) . ")";
}
?>

Ausgabe für den 21.4.2018:

Sommerzeit: Ja (25.3 - 28.10)

Schaltjahr

1
2
3
4
5
6
7
8
<?php
// Schaltjahr
// Jahreszahlen zwischen 1970 und 2099
function Schaltjahr($jahr) {
 
$schaltjahr date("L"mktime(00011$jahr));
 return 
'Das Jahr ' $jahr ' ist ' . ($schaltjahr == "" "k") . 'ein Schaltjahr.';
}
?>

Ausgabe für das Jahr 2018:

Das Jahr 2018 ist kein Schaltjahr.

Julianisches Datum

1
2
3
4
5
6
7
8
<?php
// Julianisches Datum
function julian($tag$monat$jahr) {
 
$jd jdtojulian(unixtojd(mktime(200$monat$tag$jahr)));
 
$jd explode("/"$jd);
 return 
'Julianisches Datum: ' $jd[1] . '.' $jd[0] . '.' $jd[2];
}
?>

Ausgabe für den 21.4.2018:

Julianisches Datum: 8.4.2018

Öffnungszeiten

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// Öffnungszeiten
$oeffnungszeiten[1] = "Montag: 10:00 bis 14:00 Uhr";
$oeffnungszeiten[2] = "Dienstag: 10:00 bis 18:00 Uhr";
$oeffnungszeiten[3] = "Mittwoch Geschlossen";
$oeffnungszeiten[4] = "Donnerstag: 10:00 bis 20:00 Uhr";
$oeffnungszeiten[5] = "Freitag: 10:00 bis 18:00 Uhr";
$oeffnungszeiten[6] = "Samstag: 10:00 bis 14:00 Uhr";
$oeffnungszeiten[7] = "Sonntag Geschlossen";

foreach (
$oeffnungszeiten as $nr => $zeiten) {
 if (
$nr == date("N")) {
 echo 
'<strong>$zeiten '</strong><br>';
 } else {
 echo 
$zeiten '<br>';
 }
}
?>

Montag: 10:00 bis 14:00 Uhr
Dienstag: 10:00 bis 18:00 Uhr
Mittwoch Geschlossen
Donnerstag: 10:00 bis 20:00 Uhr
Freitag: 10:00 bis 18:00 Uhr
Samstag: 10:00 bis 14:00 Uhr
Sonntag Geschlossen

<style>
p#oeffnungszeiten {
  padding: 10px 5px 10px 20px;
  width: 310px;
  margin: Auto;
  background: none repeat scroll 0 0 #DBDBDB;
  color: #CCCCCC;
  text-shadow: 0 -1px 1px #3B3B3B, 0 1px 1px #FFFFFF;
  box-shadow: inset 0px 0px 5px 5px #C3C3C3;
}

p#oeffnungszeiten strong {
  text-shadow: 0 -1px 1px #0076AE, 0 1px 1px #FFFFFF;
}
</style>

Weitere Berechnungen mit dem Datum auf Seite

Tipps

Wenn die date()-Funktion verwendet wird, dann sollte auch die richtige Zeitzone gesetzt werden, mit: date_default_timezone_set("Europe/Berlin"); - http://php.net/manual/de/timezones.europe.php

Das Jahr 2038 Problem (de.wikipedia.org)