kostenloser Webspace werbefrei: lima-city


Datumsdifferenz

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    s******y

    Ich habe zwei Daten im timestamp-Format. Ich möchte nun berechnen, wie viele Jahre die Daten auseinander liegen. Konkret geht es darum, dass ich auf meiner Website mein Alter immer automatisch aktualisiert haben möchte. Grundsätzlich könnte man ja die Differenz berechnen, die dann in Sekunden vorliegen würde. Mein Problem: Wenn zwischen den beiden Daten ein Schaltjahr lag, wird es nicht richtig aktualisiert. Oder liege ich in meiner Vermutung falsch? Ich habe es noch nicht ausprobiert.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Wenn es nur auf ein jahr genau sein muss, ist der fehler, der durch schaltjahre entsteht ziemlich klein, das heißt es würde erst nach sehr vielen jahren ein fehler bemerkbar werden.
  4. n********r


    Ich habe zwei Daten im timestamp-Format. Ich möchte nun berechnen, wie viele Jahre die Daten auseinander liegen. Konkret geht es darum, dass ich auf meiner Website mein Alter immer automatisch aktualisiert haben möchte. Grundsätzlich könnte man ja die Differenz berechnen, die dann in Sekunden vorliegen würde. Mein Problem: Wenn zwischen den beiden Daten ein Schaltjahr lag, wird es nicht richtig aktualisiert. Oder liege ich in meiner Vermutung falsch? Ich habe es noch nicht ausprobiert.


    Außerdem weiß auch der Rechner, wann ein Schaltjahr ist und kann es so ausrechnen.
    SOnst musst du halt eine Funktion schreiben wo er das überprüft und dann ausrechnet.
  5. t****y

    Wenn du dein Alter immer aktuell irgendwo ausgeben willst dann nimm einfach diese Funktion:

    <?php
    /* Funktion zum berechnen des Alters */
    function getage($birthday)
    { 
      if (eregi("([0-9]{1,2}).([0-9]{1,2}).([0-9]{4})",$birthday)) 
      { 
        $exp=explode(".",$birthday); 
        $now=mktime(0,0,0,date("m"),date("d"),date("Y")); 
        $birth=mktime(0,0,0,$exp[1],$exp[0],2000); 
        $age=intval(($now-$birth)/(3600 * 24 * 365)); 
        $age=$age+(2000-$exp[2]); 
        return ($age); 
      }
    } 
    ?>


    Der Funktion übergibst du dein Geburtsdatum einfach in dieser Form: DD.MM.JJJJ

    Beispiel:

    <?php
    echo getage('31.07.1989');
    ?>


    Würde 17 ausgeben.

    Beitrag geändert: 6.7.2007 13:18:48 von *******
  6. Autor dieses Themas

    s******y

    Der Code von ******* wäre genau das was ich selber geschrieben hätte, nur löst das mein Problem mit den Schaltjahren nicht. Gebe ich beispielsweise als Geburtsdatum den 07.07.1989 ein, wird 18 ausgegeben, obwohl jemand mit diesem Geburtsdatum nur 17 Jahre alt ist.
  7. sandrock-jonas

    Kostenloser Webspace von sandrock-jonas

    sandrock-jonas hat kostenlosen Webspace.

    Du könntest das so lösen. Ist zwar etwas umständlich, müsste aber funktionieren:

    <?php
    
    function getage($time) {
      if (date('m',$time) == date('m')) {
        if (date('d',$time) >= date('d'))
          return (date('Y')-date('Y',$time));
        else
          return (date('Y')-date('Y',$time)-1);
      } elseif (date('m',$time) < date('m')) {
        return (date('Y')-date('Y',$time));
      } else {
        return (date('Y')-date('Y',$time)-1);
      }
    }
    
    ?>
  8. Autor dieses Themas

    s******y

    Die Scripts von sandrock-jonas sowie von ******* haben ein Problem: Ein Tag vor dem eigentlichen Geburtstag wird ein Jahr dazugezählt.
    Vielleicht funktioniert das wirklich nicht?!?

    edit:
    Vielleicht noch ein konkretes Beispiel zu meinem vorherigen Eintrag:

    Heute ist der 6.7.07
    Wenn jemand am 7.7.07 Geburtstag hat, wird nun bei den obigen Scripts schon am 6.7.07 das Alter auf 18 Jahre erhöht. Ich möchte dies aber erst am eigentlichen Geburtstag erhöht haben.

    Beitrag geändert: 7.7.2007 11:17:42 von occhi
  9. sandrock-jonas

    Kostenloser Webspace von sandrock-jonas

    sandrock-jonas hat kostenlosen Webspace.

    Meine Funktion hat im Prinzip schon die Schaltjahre beachtet. Aber ich hab ein größer-kleiner Zeichen falschrum gesetzt. Hier die richtige Version:

    <?php
    
    function getage($time) {
      if (date('m',$time) == date('m')) {
        if (date('d',$time) <= date('d'))
          return (date('Y')-date('Y',$time));
        else
          return (date('Y')-date('Y',$time)-1);
      } elseif (date('m',$time) < date('m')) {
        return (date('Y')-date('Y',$time));
      } else {
        return (date('Y')-date('Y',$time)-1);
      }
    }
    
    ?>
  10. Autor dieses Themas

    s******y

    Vielen Dank, sandrock-jonas! Mein Problem ist nun gelöst.
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!