ilch Forum » Allgemein » HTML, PHP, SQL,... » Tage bis Geburtstag

Geschlossen
  1. #1
    User Pic
    Outi77 Mitglied
    Registriert seit
    31.03.2013
    Beiträge
    1.337
    Beitragswertungen
    143 Beitragspunkte
    Guten Morgen,

    ich möchte gern, wie oben beschrieben, die Tage bis zum Geburtstag ermitteln.
    Falls es nicht schon in irgendeinem Modul vorhanden ist, versuche ich das wie folgt:
    Das Geburtsdatum aus der DB auslesen und umwandeln...
    $gebdatum = date('d.m.Y',strtotime($r->gebdatum));

    Jetzt das Geburtsdatum zerlegen...
    $tag   = date('d',strtotime($r->gebdatum));
    $monat = date('m',strtotime($r->gebdatum));
    $jahr  = date('Y',strtotime($r->gebdatum));

    Den neuen (diesjährigen) Geburtstag zusammenbauen...nur für Anzeige nötig
    $ngebdatum = $tag.'.'.$monat.'.'.date('Y');

    Jetzt die Tage bis dahin ermitteln...
    $dtbd = floor((mktime(0, 0, 0, $tag, $monat, date('Y')) - time()) / 86400);

    Sorry für die Backslashes, ich weiß nicht, wie die überall reinkommen.
    Jedenfalls, irgendwo muss ein Fehler sein, denn die Tage werden falsch berechnet.
    Wäre für jede Hilfe dankbar!
    gruß Outi


    verwendete ilchClan Version: 1.1 P

    betroffene Homepage: externer Link
    Die richtige Formulierung eines Problems ist nicht selten bereits die halbe Lösung.
    »Albert Einstein«
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    holz Hall Of Fame
    Registriert seit
    17.11.2005
    Beiträge
    4.606
    Beitragswertungen
    117 Beitragspunkte
    schau dir mal das an
    php.net/manual/de/datetime.diff.php

    für datumsformate gibt es spezielle diff funktionen
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Outi77 Mitglied
    Registriert seit
    31.03.2013
    Beiträge
    1.337
    Beitragswertungen
    143 Beitragspunkte
    Danke holz für den Link, jetzt läuft es...
    //Geburtstdatum und Tage bis dahin
    		if (!empty($r->gebdatum) AND $r->gebdatum !== "0000-00-00") {
    			$gebdatum = date('d.m.Y',strtotime($r->gebdatum));
    			$tag   = date('d',strtotime($r->gebdatum));
    			$monat = date('m',strtotime($r->gebdatum));
    			$jahr  = date('Y',strtotime($r->gebdatum));
    				
    			$jetzt = mktime(0,0,0,date("m"),date("d"),date("Y"));
    			$geburtstag = mktime(0,0,0,$monat,$tag,$jahr);
    			$alter  = intval(($jetzt - $geburtstag) / (3600 * 24 * 365));
    			//neues Alter
    			$nalter = $alter + 1;
    				
    			$akt_year = date('Y');
    			$ngebdatum2 = strtotime($akt_year."-".$monat."-".$tag);
    			if ($ngebdatum2<time()) {
    				$akt_year++;
    				$ngebdatum2 = strtotime($akt_year."-".$monat."-".$tag);
    			}
    			//diesjähriger B-Day
    			$ngebdatum = $tag.'.'.$monat.'.'.$akt_year;
    			$dtbd = ceil(($ngebdatum2 - time()) / 86400);
    			//Tag(e) bis zum B-Day
    			$dtbd.= ($dtbd == 1 ? ' Tag' : ' Tage');
    		}


    erledigt!


    Zuletzt modifiziert von Outi77 am 18.10.2013 - 13:22:35
    Die richtige Formulierung eines Problems ist nicht selten bereits die halbe Lösung.
    »Albert Einstein«
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    holz Hall Of Fame
    Registriert seit
    17.11.2005
    Beiträge
    4.606
    Beitragswertungen
    117 Beitragspunkte
    erledigt
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten