Alter berechnen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Alter berechnen

    Hallo zusammen,

    ich habe da etwas, was ich nicht so ganz verstehe.

    Ich habe eine User-Datenbank. deren Guburtsdatum als Timestamp abgelegt ist.
    Nun möchte ich das aktuelle Alter einer Person ermitteln.

    Meine Formel sieht dazu so aus:

    $alter_array = explode(".", (time() - $cur['birthdate']) / (86400 * 365));
    $alter = $alter_array[0];

    Das Ergebnis aus aktuellem Timestamp minus Timestamp des Geburtsdatums geteilt durch 365 Tage (86400 Sekunden = 1 Tag).
    Das Ergebnis ist eine Komma-Zahl, die ja nicht gerundet werden soll. Darum hole ich sie in ein Array und schneide nach dem Punkt ab.

    Allerdings habe ich jetzt festgestellt, dass mir das Alter um ca. 2 Wochen zu früh angezeigt wird.
    Die Berechnung des Geburtstags-Timestamp scheint zu stimmen. Wenn ich ihn zurüch rechnen lasse, habe ich exakt wieder das Datum.
    Stimmt denn meine Berechnung nicht?

    Ich werde jetzt mal die Server-Zeit überprüfen. Vielleicht fällt euch ja noch was dazu ein, as ich übersehen habe.

    Grüße, Andi

  • #2
    Also Server-Zeit stimmt!

    Kommentar


    • #3
      guckst du hier:

      http://php-resource.de/forum/showthr...186#post118186
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #4
        Hmm, hilft mir aber auch nicht wirklich weiter. Ich will ja nicht einen Teil aus einer Tabelle selecten, der ein bestimmtes Alter hat, sondern zu bestehenden Datensätzen das Alter errechnen.

        Machen wir es doch mal ganz simpel. Ich habe zwei Timestamps. $geburtstag und $aktuelle_zeit. Sage ich jetzt $aktuelle_zeit - $geburtstag, habe ich das Alter in Sekunden. Dass muß jetzt in Jahre umgerechnet werden. Also / 365 Tage (3600 * 24 * 365 sekunden.)
        Ah, ich glaube ich habe das Problem. Wie sieht es denn mit Schaltjahren aus. Ich lasse durch 365 Tage teilen, dabei müßten es ja alle 4 Jahre 366 Tage sein.
        Oh je, hat nicht irgend jemand schon eine Funktion dafür, dass das Alter zwischen zwei Timestamps exakt berechnet?

        Grüße & Dank,
        Andi

        Kommentar


        • #5
          dass du das alter aller eingetragenen benutzer bekommst, wenn du where und having weglässt, weißt du schon oder?
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Ah, du meinst wenn ich ein

            $res = mysql_query("SELECT name, gender, geburtsdatum DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW()) - TO_DAYS(geburtsdatum)), '%Y') 'Alter' FROM table");
            $cur = mysql_fetch_array($res);

            mache, bekomme ich in $cur['Alter'] das exate Alter übermittelt? Auch unter Berücksichtigung der Schaltjahre?

            Kommentar


            • #7
              nein, du musst noch selbst rechnen und zwar noch viel umständlicher als du's jetzt machst
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                Das will nicht.

                PHP-Code:
                $res mysql_query("SELECT id, birthdate, DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW()) - TO_DAYS(birthdate)), '%Y') 'age' FROM $db_profile WHERE id = 1");
                $cur mysql_fetch_array($res);

                print 
                $cur['age']; 
                Das Scrit rödelt ewig und bricht dann ab, ohne irgend etwas auszuspuchen. Weder Fehlermeldung noch Alter.

                Kommentar


                • #9
                  Also wenn ich keine Antwort bekomme, muß ich mir eben selbt helfen

                  Statt TO_DAYS(birthdate) muß es TO_DAYS(FROM_UNIXTIME(birthdate)) heißen, da ich das Alter ja al Unix-Timestamp in die Tabelle geschrieben habe. Und es muß auch ein kleines y bei '%y' sein, da das Alter sonst als vierstellige Zahl angegeben wird mit fürhrender 00.

                  Aber der Ansatz hat ja schon mal gestimmt

                  Dank & Grüße, Andi

                  Kommentar


                  • #10
                    ein kleines bissschen musst du schon selbst machen oder?
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar

                    Lädt...
                    X