| Systemvoraussetzung 
			  LinuxWindowsPHP 3PHP 4PHP 5  Datei(en)
 GregorianToJD.php
 
 Problem
 
 Sie haben zwei Datumsangaben und möchten die Anzahl der Tage ermitteln,
			  die zwischen diesen Datumsangaben liegen. Mögliche Fragen, die diese Problemstellung
			  umschreiben, wären zum Beispiel:
 
			   Wie alt sind Sie in Tagen?			     Vor wie viel Tagen ist Mozart gestorben?			     In wie vielen Tagen ist die nächste totale Sonnenfinsternis in Deutschland?			     In wie vielen Tagen läuft ein AuktionsAngebot
			    aus?  Mit den Ergebnissen dieser Frage könnten Sie weitere Berechnungen durchführen,
			  die Anzahl der Tage als Counter für dieses Ereignis auf Ihrer Website
			  präsentieren oder einfach nur als Information für Ihre Besucher bereithalten.
			  
 Lösung
 
 Die Lösung für dieses Problem ist relativ simpel. PHP bietet bereits eine vorgefertigte
			  Lösung in Form einer Funktion an. Mit der Funktion GregorianToJD()
			  können wir unsere Datumsangaben vom Gregorianischen Kalender zum Julianischen
			  Datum hin konvertieren und erhalten als Ergebnis die Anzahl der
			  Tage, die seit dem 01.01.4713 v. Chr. verstrichen sind.
 
 Um die Tage zwischen den beiden Ereignissen zu erhalten, subtrahiert ()
			  man
			  nur noch das jüngste Datum vom ältesten Datum. Bitte achten Sie aber darauf,
			  nur Datumsangaben zwischen 4714 v. Chr. bis 9999 n. Chr. zu benutzen.
 
 function seDay($begin,$end,$format,$sep)
 @param   string   $begin
 @param   string   $end
 @param   string   $format
 @param   string   $sep
 @return   integer
 
 Als Parameter erwartet die Funktion zwei Datumsangaben ($begin, $end)
(39), einmal das jüngste und einmal das älteste Datum. Dabei ist es irrelevant,
in welcher Reihenfolge Sie diese übergeben, da die Funktion diese automatisch
erkennt und zur Berechnung jeweils richtig nutzt. Der Parameter $format
muss die korrekte Datumsformatierung enthalten, also wie Ihr Datum aufgebaut
ist. Mögliche Werte hierfür sind:
 Der letzte Parameter $sep steht für die Trennzeichen Ihrer Datumsangabe. Je
			  nachdem, ob Sie z. B. ein deutsches oder amerikanisches Datumsformat haben,
			  kann es mit diesem Parameter eingestellt werden.
			  
 Zuerst wird anhand Ihrer Formatierungsangabe (z. B. d.m.Y) herausgefunden
			  (41-43),
			  an welcher Stelle (1, 2 oder 3) die einzelnen Buchstaben stehen. Diese
			  Information benötigen wir später (48, 49), um die korrekten Werte für
			  GregorianToJD() setzen zu können. Die beiden Datumsangaben werden
			  dann durch die Trennzeichen ($sep) in einem Array zerlegt (45, 46). Somit
			  haben wir alle Informationen, um das Datum zu berechnen (48, 49).
 
 Ist das erste Datum größer (51) als das zweite Datum, so ziehen wir das zweite
			  Datum vom ersten Datum ab (52). War das erste Datum kleiner (53), ziehen
			  wir das zweite Datum vom ersten Datum ab. Als Rückgabewert wird jeweils
			  die Menge der Tage geliefert.
 
 
 
			  Beispiel 2.2: GregorianToJD.php
			    | 39:40:
 41:
 42:
 43:
 44:
 45:
 46:
 47:
 48:
 49:
 50:
 51:
 52:
 53:
 54:
 55:
 56:
 | function seDay($begin,$end,$format,$sep){ 
 $pos1 = strpos($format, 'd');
 $pos2 = strpos($format, 'm');
 $pos3 = strpos($format, 'Y');
 
 $begin = explode($sep,$begin);
 $end = explode($sep,$end);
 
 $first = GregorianToJD($end[$pos2],$end[$pos1],$end[$pos3]);
 $second = GregorianToJD($begin[$pos2],$begin[$pos1],$begin[$pos3]);
 
 if($first > $second)
 return $first - $second;
 else
 return $second - $first;
 
 }
 |  
 Dieses Beispiel soll zeigen, wie die Funktion mit deutschen Datumsangaben
aufgerufen wird. Das deutsche Datum wird bekanntlich im Format Tag, Monat,
Jahr aufgebaut und enthält als Trennzeichen den Punkt. $timeA enthält
hier das Geburtsdatum von Wolfgang Amadeus Mozart, hingegen $timeB die
aktuelle Zeit.
 
 
 
  Beispiel 2.3: GregorianToJD.php
    |  64:65:
 66:
 67:
 68:
 
 | $timeA = '27.01.1756'; $timeB = date("d.m.Y");
 
 $mozart = seDay($timeA,$timeB,"dmY",".");
 echo 'Wolfgang Amadeus Mozart wäre heute ' . $mozart . ' Tage alt';
 |  
 Das folgende Beispiel soll zeigen, wie die Funktion mit amerikanischen Datumsangaben
aufgerufen wird. Das amerikanische Datum wird im Format
Monat, Tag, Jahr dargestellt. Als Trennzeichen enthält es einen Bindestrich
oder den Schrägstrich. $timeA enthält hier das das Datum der nächsten totalen
Sonnenfinsternis in Deutschland, $timeB dagegen die aktuelle Zeit.
 
 
 
  Beispiel 2.4: GregorianToJD.php
    |  79:80:
 81:
 82:
 83:
 84:
 | $timeA = '09-03-2081'; $timeB = date("m-d-Y");
 
 $sonne = seDay($timeA,$timeB,"mdY","-");
 
 echo 'Die nächste totale Sonnenfinsternis in Deutschland ist in ' . $sonne . ' Tagen';
 |  
 
 Ausgabe im Browser
 
 
 
  
    | Wolfgang Amadeus Mozart wäre heute 91354 Tage alt Die nächste totale Sonnenfinsternis in Deutschland ist in 27570 Tagen
 |  
 
    
 Dieses Skript aus dem SELFPHP KOCHBUCH wurde von SELFPHP unter dem "Tarif Mc500" von McAc.net-Webhosting erfolgreich ausgeführt und getestet!
 
 Auf der Übersichtseite unter "McAc.net – Webhosting zu diesem Buch" finden Sie weitere Informationen zu dem Webhostingpaket, dass durch SELFPHP getestet wurde.
 
 
 
 |