hannes: Geburtstags-Script

Hi,

Habe soeben versucht ein Geburtstags-Scirp zu schreiben.
Oben steht die Tabelle mit den Geburtstagen und den Namen dem Alter und den tagen bis zum Geburtstag und unten ein mini-Formular:
Name
Nachname
geburtstag

fertig.

habe funktionen gefunden die das alter berechnen und die restlichen tage - alles super und dann die entäuschung - TIMESTAMPS gehen ja nur bis 1970. so ein mist meine mutter ist 52 Geboren - wie löse ich jetzt das Problem?

Irgendjemand hat das doch bestimmt schon mal programmiert und kann mir ein fertiges script iefern oder?

hannes

  1. http://www.meine-erste-homepage.com/geburtstage_verwalten.php

    Eintrag eins bei Google-Suche nach PHP Geburtstags Script.

  2. echo $begrüßung;

    TIMESTAMPS gehen ja nur bis 1970. so ein mist meine mutter ist 52 Geboren - wie löse ich jetzt das Problem?

    Ab PHP 5.1.0 können Timestamps auch ein negatives Vorzeichen bekommen und gehen damit von Freitag 13. Dezember 1901 20:45:54 GMT bis Dienstag 19. Januar 2038 03:14:07 GMT.

    Ansonsten gibt es noch Datumsbibliotheken, die mit noch größeren Wertebereichen umgehen können und teilweise auch Kalenderanomalien der Vergangenheit berücksichtigen.

    PEAR beinhaltet ein Package namens Date, das mit beliebigen Datumswerten zurecht kommt und auch Berechnungsmethoden enthält.

    echo "$verabschiedung $name";

  3. Hallo hannes,

    habe funktionen gefunden die das alter berechnen und die restlichen tage - alles super und dann die entäuschung - TIMESTAMPS gehen ja nur bis 1970. so ein mist meine mutter ist 52 Geboren - wie löse ich jetzt das Problem?

    Dazu hat PHP die Kalender-Funktionen. Um damit den Abstand zwischen zwei Daten zu berechnen, wandelst du das Geburtsdatum und das aktuelle Datum in die "julianische Tagesnummer" oder JDN[1] um.  Wenn du von der größeren JDN die kleinere abziehst, hast du den Abstand in Tagen:

      
    // Geburtsdatum  
    $jdn_geb = gregoriantojd($geb_monat, $geb_tag, $geb_jahr);  
      
    // Heute  
    $heute = explode(' ', date('n j Y') );  
    $jdn_heute =  gregoriantojd($heute[0], $heute[1], $heute[2]);  
      
    // Tagesdifferenz  
    $tage = $jdn_heute - $jdn_geb;  
      
    printf('Du bist schon %s Tage alt.', $tage);  
    
    

    Dies funktioniert auch mit Jahreszahlen, die weit vor den jeweiligen Timestamp-Begrenzungen liegen. Allerdings geht PHP stillschweigend von einem hypothetischen Gregorianischem Kalender aus. Spätestens vor dem Oktober 1582 verrechnet sich gregoriantojd() um ein paar Tage. Aber Menschen, die da geboren sind und noch leben, kenne ich keine -- also kann man diese Ungenauigkeit getrost vernachlässigen ... ;-)

    [1] Bei PHP heißt die JDN "julianisches Datum", das hat aber nichts mit dem Julianischen Kalender zu tun.

    MffG
    EisFuX