TH99: Alter aus Geburtsdatum errechnen

Hallo!

Ich habe eine Variable

$gdatum="01.01.1970";  

Wie kann ich anhand des aktuellen Datums mit PHP das Alter errechnen und in eine neue Variable schreiben?

Vielen Dank schon mal für die Hilfe...

Grüße, Tom

  1. Wie kann ich anhand des aktuellen Datums mit PHP das Alter errechnen und in eine neue Variable schreiben?

    Die Dokumentation der Datums- und Uhrzeitfunktionen hilft dir sicher weiter - in den Kommentaren sollte einiges sein, was etwa deinem Wunsch entspricht (Differenz zweiter Zeitpunkte errechnen).

  2. $gdatum="01.01.1970";

      
    Hi,  
      
    ein gar lustiges Datum, denn bei genau diesem fällt mir gleich die Lösung  
      
    $neue\_variable=time()/Sekunden je Jahr  
      
    Liegt aber am Datum. Ansonsten müsstest Du nämlich erstmal das Datum in einen timestamp umrechnen.  
      
    Aber ich erinnere mich an einen guten Thread hier im Forum, in dem das ausgibigst diskutiert wurde und eine beseere Lösung als Unix-Time-Lösungen gepostet wurde.  
      
    Suche mal über diese Begriffe im Archiv, da müsste was zu finden sein.  
      
    Grüße, Hans
    
    1. Liegt aber am Datum. Ansonsten müsstest Du nämlich erstmal das Datum in einen timestamp umrechnen.

      Warum?

      1. Warum?

        Um die Differenz zu time() zu errechnen. Voraussetzung, er will es über den timestamp errechnen.

  3. Hallo

    $gdatum="01.01.1970";

      
    split $gdatum = $jahr, $monat, $tag;  
      
    $alter <- $dieses\_jahr - $jahr;  
      
    Wenn $monat < $dieser\_monat  
      $alter++  
    sonst wenn $monat == $dieser\_monat  
      wenn $tag <= $dieser\_tag  
        $alter++  
      
    Damit du auch was lernst, habe ich es kryptisch geschrieben.  
    Das ist ungetestet, sollte aber pi mal Daumen funktionieren.  
      
    Lg  
    testding
    
  4. Hi!

    Wie kann ich anhand des aktuellen Datums mit PHP das Alter errechnen und in eine neue Variable schreiben?

    Das Problem an den bereits erwähnten Methoden, einen Unix-Timestamp daraus zu machen und dann damit zu rechnen, ist, dass damit nicht selten nur ein eingeschränkter Bereich abgedeckt ist. Er ist ja als Anzahl der Sekunden seit 1.1.1970 UTC definiert. Die Beschränkung des Wertebereichs des Typs Integer und andere Einschränkungen im System garantieren oft nur eine Abdeckung von 1970 bis mitten im Jahr 2038. Mit negativen Timestamps reicht der Bereich nach unten bis irgendwann im Jahr 1901. Auf einen noch größeren Wertebereich sollte man sich nicht verlassen.

    Desweiteren ist das Rechnen mit Datumswerten nicht sehr einfach. Sekundenbasiert zu rechnen macht es nicht viel besser. Seit PHP 5.2 steht aber die DateTime-Klasse plus ein paar weitere hilfreiche zur Verfügung, die all die Besonderheiten bei der Datumsarithmetik berücksichtigen und unter anderem das Bilden der Differenz zweier Daten ermöglichen.

    Allerdings arbeiten diese Funktionen, wie so oft üblich, mit der Schreibweise yyyy-mm-dd. Es ist grundsätzlich empfehlenswert, wenn du Datümer™ immer in dieser Form verarbeitest. Zum Ausgaben kannst du sie umformatieren, beim Einlesen solltest du sie parsen und in diese Form bringen.

    Lo!

  5. Hallo!

    Ich habe eine Variable

    $gdatum="01.01.1970";

    
    >   
    > Wie kann ich anhand des aktuellen Datums mit PHP das Alter errechnen und in eine neue Variable schreiben?  
      
    In welcher Maßeinheit soll denn das Alter berechnet/ausgegeben werden?  
      
    Hotti
    
    -- 
    Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
    
    1. Hi,

      Wie kann ich anhand des aktuellen Datums mit PHP das Alter errechnen und in eine neue Variable schreiben?
      In welcher Maßeinheit soll denn das Alter berechnet/ausgegeben werden?

      vielleicht in Litern oder in Volt?
      Nee, ehrlich - natürlich in einer Zeiteinheit. Ob Tage, Sekunden, Stunden oder Wochen, ist ja wohl egal, das steht schließlich alles in einem festen Verhältnis zueinander.

      Ciao,
       Martin

      --
      Zwischen Leber und Milz
      passt immer noch'n Pils.
      1. hi,

        Wie kann ich anhand des aktuellen Datums mit PHP das Alter errechnen und in eine neue Variable schreiben?
        In welcher Maßeinheit soll denn das Alter berechnet/ausgegeben werden?

        vielleicht in Litern oder in Volt?
        Nee, ehrlich - natürlich in einer Zeiteinheit. Ob Tage, Sekunden, Stunden oder Wochen, ist ja wohl egal, das steht schließlich alles in einem festen Verhältnis zueinander.

        Ja, ne, klar, das ist eben nicht egal. Zum Beispiel ist es nicht möglich, anhand eines Alters in Tagen zu sagen, wieviele Jahre das sind. Weil: Es gibt Jahre mit 365 Tagen und es gibt Jahre mit 366 Tagen.

        Mit netten Grüßen,
        Horst

        --
        Das Beste am Winter ist der Frühling.
        1. Hallo,

          In welcher Maßeinheit soll denn das Alter berechnet/ausgegeben werden?
          Nee, ehrlich - natürlich in einer Zeiteinheit. Ob Tage, Sekunden, Stunden oder Wochen, ist ja wohl egal, das steht schließlich alles in einem festen Verhältnis zueinander.
          Ja, ne, klar, das ist eben nicht egal. Zum Beispiel ist es nicht möglich, anhand eines Alters in Tagen zu sagen, wieviele Jahre das sind. Weil: Es gibt Jahre mit 365 Tagen und es gibt Jahre mit 366 Tagen.

          stimmt, aber der "Fehler" liegt in der Größenordnung von einem Promille, ist also im Kontext des menschlichen Alters vernachlässigbar. "Fehler" in Anführungszeichen, weil es ja kein Rechenfehler im eigentlichen Sinn ist, sondern nur eine Ungenauigkeit der Definition.

          Davon abgesehen ist ein Jahr in einigen Bereichen der Wissenschaft eine durchaus exakt definierte Größe. So ist ein astronomisches Jahr z.B. mit 365.25 Tagen zu je 24 Stunden (also 86400 Sekunden) definiert, ein Jahr nach dem gregorianischen Kalender mit 365.2425 Tagen (auch ersatzweise als Quasi-SI-Einheit).

          Ciao,
           Martin

          --
          F: Was ist wichtiger: Die Sonne oder der Mond?
          A: Der Mond. Denn er scheint nachts. Die Sonne dagegen scheint tagsüber, wenn es sowieso hell ist.
          1. hi Moin Martin,

            Davon abgesehen ist ein Jahr in einigen Bereichen der Wissenschaft eine durchaus exakt definierte Größe. So ist ein astronomisches Jahr z.B. mit 365.25 Tagen zu je 24 Stunden (also 86400 Sekunden) definiert, ein Jahr nach dem gregorianischen Kalender mit 365.2425 Tagen (auch ersatzweise als Quasi-SI-Einheit).

            Manchmal ist es besser, in Tagen zu rechnen. Im Julianischen Zeitalter war jedes 4. Jahr ein Schaltjahr. Es ist die Differenz entschiedend, also wann diese Epoche gültig war: vom 1.1.4713 BC bis 4.10.1582

            Damit kannst Du nun ausrechnen, wieviele Jahre das mit 366 Tagen und wieviele Jahre das mit 365 Tagen sind, Du kommst auf 2299160 Tage (die Rechnung ist einfach, Hinweis: das Jahr 0 gibt es nicht).

            Ab 15.10.1582 gilt eine andere Epoche, da ist

            die Anzahl der Schaltjahre =

            • Anzahl der Jahre, die durch 4 teilbar sind
            • Anzahl der Jahre, die duch 400 teilbar sind
            • Anzahl der Jahre, die duch 100 teilbar sind.

            Auf einen gemeinsamen Nenner gebracht, ergibt sich damit eine Periode von 400 Jahren. Das sind 97 Schaltjahre mit 366 und 303 Gemeinjahre mit 365 Tagen. Am 15.10.1982 war die erste 400-Jahre-Periode zuende....

            Ergo: Nimm maln Zettel und Stift, rechne mal ein bischen, Du wirst sehen, dass ein Jahr nicht ein Jahr ist und dass wir päpstlich-gregorianisch verblödeten Westgermanen unser Alter besser in Tagen angeben sollten ;-)

            Viele Grüße,
            Horst Klugschei?er

            1. Hallo,

              Manchmal ist es besser, in Tagen zu rechnen.

              wem sagst du das. Ich halte das Julianische Datum (also die fortlaufende Tageszählung) für eine so segensreiche Idee, dass ich mich wundere, warum sich das nicht auch in anderen Bereichen als der Astronomie etabliert.

              Ab 15.10.1582 gilt eine andere Epoche, da ist

              ... der gregorianische Kalender eingeführt worden.

              Auf einen gemeinsamen Nenner gebracht, ergibt sich damit eine Periode von 400 Jahren. Das sind 97 Schaltjahre mit 366 und 303 Gemeinjahre mit 365 Tagen.

              Gut. Der Rechenfehler, den man durch Ignorieren der Schaltjahre machen würde, ist also 97 / 146000, das ist rund 1/1500 oder 0.67 Promille.
              Wie gesagt: Es gibt Fälle, in denen das keine Rolle spielt. Für die Altersberechnung wäre mir dieser Fehler schnurz.

              Am 15.10.1982 war die erste 400-Jahre-Periode zuende....

              Hmm. Ja. Wenn du die Grenzen mittendrin ziehen willst. Ich hätte die erste Periode per definitionem am 31.12.1599 enden lassen und erklärt, dass eben diese erste Periode aufgrund des Datums der Einführung unvollständig ist.

              Ergo: Nimm maln Zettel und Stift, rechne mal ein bischen, Du wirst sehen, dass ein Jahr nicht ein Jahr ist und dass wir päpstlich-gregorianisch verblödeten Westgermanen unser Alter besser in Tagen angeben sollten ;-)

              Okay, dann bin ich eben rund 15000 Tage alt. :-)

              Ciao,
               Martin

              PS: Dieser Beitrag wurde um JD 2455176.915 geschrieben.

              --
              Ich stehe eigentlich gern früh auf.
              Außer morgens.
              1. Hallo,

                Manchmal ist es besser, in Tagen zu rechnen.

                wem sagst du das. Ich halte das Julianische Datum (also die fortlaufende Tageszählung) für eine so segensreiche Idee, dass ich mich wundere, warum sich das nicht auch in anderen Bereichen als der Astronomie etabliert.

                Full Ack! Der Maya-Kalender ist so aufgebaut, es ist damit sooooo einfach, Datumsen aufeinander drauflos zu addieren oder Tage wegzunehmen ;-)

                Ich habs neulich erst veröffentlicht:
                Unsere Kalender (Julian, Gregorian) sind als Tageszähler auf den ersten Blick ungeeignet. Es ist der Verdienst Scaligers, die entsprechenden Formeln zu Verfügung gestellt zu haben, die eine Tageszählung sozusagen im Nachhinein ermöglichen bis zurück zum 1.1.4713 BC. Um die Zeit der Gregorianischen Kalenderreform gab es seitens Scaligers die Bemühung, einen Tageszähler einzuführen, der konnte sich jedoch nicht durchsetzen, weil die Kirche darauf bestand, dass ein Kalender in erster Linie dazu diene, synodisches und siderisches Jahr in Einklang zu bringen wegen der Feiertage. Das wurde zwar mit der Reform von 1582 bewerkstelligt, aber der Witz ist der, dass das Osterdatum immer noch bis heute nach Gauss berechnet wird, der erstens viel Jahre später lebte und zweitens auf einem Sonnenzyklus von 28 Jahren basiert, den es mit der Einführung der Gregorianischen Schaltjahresregelung faktisch nicht mehr gibt. Daher ist es nicht verwunderlich, dass die Gauss'sche Osterformel in manchen Jahren den Frühlingsvollmond nicht exakt bestimmt, die Kirche jedoch diese Fehler toleriert, obwohl sie es mit dem heutigen Kalender gar nicht nötig hätte.

                Viele Gr??e,
                Maya-Hotte as Motte

        2. Hi,

          Zum Beispiel ist es nicht möglich, anhand eines Alters in Tagen zu sagen, wieviele Jahre das sind. Weil: Es gibt Jahre mit 365 Tagen und es gibt Jahre mit 366 Tagen.

          Wenn das Datum, an dem die Aussage Gültigkeit besitzen soll, mit gegeben ist, dann sehr wohl.

          MfG ChrisB

          --
          “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
          1. Hi,

            Zum Beispiel ist es nicht möglich, anhand eines Alters in Tagen zu sagen, wieviele Jahre das sind. Weil: Es gibt Jahre mit 365 Tagen und es gibt Jahre mit 366 Tagen.

            Wenn das Datum, an dem die Aussage Gültigkeit besitzen soll, mit gegeben ist, dann sehr wohl.

            Reicht auch noch nicht. Es braucht noch eine Festlegung, nach welchem Kalender das Datum geschrieben wurde ;-)

            Beispiel, gegeben:
            Datum: 12.19.16.16.13
            Alter in Tagen: 366
            Gesucht: Alter in Jahren ????

            Aber nicht, dass Du denkst, ich will hier Haare spalten ;-)

            Ein abgebrühter ITler würde auf die Frage, wie alt er ist, mit einem schlichten 'Ja' antworten, weil es egal nicht gibt: Es sind Zeiteinheiten vorhanden und das sollte genügen. Egal welche Zeiteinheiten und wieviel. 'Nein' wäre die falsche Antwort, weil einer der nach dem Alter gefragt wird, in jedem Fall mehr als 0 Zeiteinheiten auf dem Buckel hat. Also ist die Frage nach dem Alter im Grunde genommen: Genau! Überflüssig!

            Schönes Wochenende ;-)
            Horschdi

            --
            Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
      2. Hi,

        Nee, ehrlich - natürlich in einer Zeiteinheit. Ob Tage, Sekunden, Stunden oder Wochen, ist ja wohl egal, das steht schließlich alles in einem festen Verhältnis zueinander.

        Die genannten Zeiteinheiten stehen in festem Verhältnis, ja. Aber bei Monaten und Jahren schaut's anders aus, weder die Monatslänge in Tagen noch die Jahreslänge in Tagen ist konstant.

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
  6. Hallo TH99!

    Wenn es auch in Perl sein darf, kannst Du mein Modul Date::Today installieren (bzw. kopieren):

    http://www.atomic-eggs.com/cgi-bin/date_today.pl
    http://www.atomic-eggs.com/cgi-bin/dc.pl (s. ganz unten)

    Viele Grüße aus Frankfurt/Main,
    Patrick

    --
    _ - jenseits vom delirium - _

       Diblom   [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
    J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?
  7. Moin!

    $gdatum="01.01.1970";

    Da würde ich ab PHP 5.3.0 die DateTime- und DateInterval-Objekte verwenden.

    <?php  
    date_default_timezone_set('Europe/Berlin');  
      
    $gdatum="10.12.2008";  
      
    $jetzt  = new DateTime();  
    $damals = new DateTime($gdatum);  
    $alter  = $jetzt->diff($damals);  
      
    echo $alter->format('%y');  
    ?>
    

    Der Formatierungsstring erlaubt auch nettere Angaben, '%y' gibt die Ganzzahl der Jahre, also das Alter.

    echo $alter->format('%y Jahre, %m Monate, %d Tage');

    - Sven Rautenberg