kostenloser Webspace werbefrei: lima-city


Formatierte Ausgabe von Timestamp-Differenz ?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    webparade

    webparade hat kostenlosen Webspace.

    Hallo

    wie kann ich eine Timestamp-tag/differenz">Differenz formatiert ausgeben,
    damit ich sowas bekomme wie: noch / seit xx Tage yy Stunden zz MInuten ss Sekunden

    $timenow = time();  // --- Start-Datum (2013-02-18 08:43:05) = aktuelle Zeit 
    
    $termin1 = '2013-02-07 10:22:10';  // --- Ziel-Datum 1 = Vergangenheit
    $termin2 = '2013-03-10 14:30:45';  // --- Ziel-Datum 2 = in der Zukunft
    
    $time1 = strtotime($termin1); 
    $time2 = strtotime($termin2); 
    
    $tdx1 = ($timenow - $time1); 
    $tdx2 = ($timenow - $time2); 
    
    print "<br />\n";
    print "<br />".$tdx1."\n"; // --- Abstand in Sekunden (positive Zahl) 
    print "<br />".$tdx2."\n"; // --- Abstand in Sekunden (negative Zahl) 
    print "<br />\n";


    wie komme ich jetzt bei Ausgabe zu sowas wie
    Termin 1 ist vor xx Tage yy Stunden zz MInuten ss Sekunden abgelaufen (Vergangenheit)
    Termin 2 wird in xx Tage yy Stunden zz MInuten ss Sekunden beginnen (in der Zukunft)

    Danke
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Da gabs mal einen Thread, in dem die Ausgabe von Sekunden auf verschiedene Arten versucht wurde… ein funktionierender Code ist der hier:
    $secs = Sekunden die formatiert werden sollen;
    $s = $secs % 60;
    $m = ($secs / 60) % 60;
    $h = ($secs / 3600) % 60;
    printf('%02d:%02d:%02d', $h, $m, $s);

    Alternativ könntest du dir auch das ansehen, das ist zwar JavaScript, aber das könnte dir ebenfalls helfen…
  4. h**s

    wie wärs einfach so: ?
    <?php
    	$iRest1 = $tdx1*(-1);
    	$iRest2 = $tdx2;
    	
    	$iTage1 = floor($iRest1/60/60/24);
    	$iRest1 -= $iTage1*60*60*24;
    	$iTage2 = floor($iRest2/60/60/24);
    	$iRest2 -= $iTage2*60*60*24;
    
    	$iStunden1 = floor($iRest1/60/60);
    	$iRest1 -= $iStunden1*60*60;
    	$iStunden2 = floor($iRest2/60/60);
    	$iRest2 -= $iStunden2*60*60;
    	
    	$iMinuten1 = floor($iRest1/60);
    	$iRest1 -= $iStunden1*60;
    	$iMinuten2 = floor($iRest2/60);
    	$iRest2 -= $iStunden2*60;
    	
    	$iSekunden1 = $iRest1;
    	$iSekunden2 = $iRest2;
    	
    	echo 'Termin 1 ist vor '.$iTage1.' Tagen, '.$iStunden1.' Stunden, '.$iMinuten1.' Minuten und '.$iSekunden1.' Sekunden abgelaufen.';
    	echo 'Termin 2 wird in '.$iTage2.' Tagen, '.$iStunden2.' Stunden, '.$iMinuten2.' Minuten und '.$iSekunden2.' Sekunden beginnen.';
    ?>
  5. Autor dieses Themas

    webparade

    webparade hat kostenlosen Webspace.

    Danke für die Tips,

    ich habe es jetzt mal so (als Funktion)

    // ----------------------------------------------------------- 
    
    function zeit_format($heute, $termin) { 
    
    	// ---- Zeit-Differenz in Sekunden ---- 
    	$secs = (strtotime($termin) - strtotime($heute)); 
    	$txzz = ($secs > 0) ? 'future' : 'past'; 
    	$secs = abs($secs); // ---- Betrag 
    	
    	// ---- Formatierung der Zeit ---- 
    	$s = $secs % 60;
    	$m = ($secs / 60) % 60;
    	$h = ($secs / 3600) % 60;
    	$d = ($secs / (3600*24)) % 60;
    	
    	// ---- Einzahl/Mehrzahl ---- 
    	$txt_s = ($s==0 || $s>1) ? 'Sekunden' : 'Sekunde';
    	$txt_m = ($m==0 || $m>1) ? 'Minuten' : 'Minute';
    	$txt_h = ($h==0 || $h>1) ? 'Stunden' : 'Stunde';
    	$txt_d = ($d==0 || $d>1) ? 'Tagen' : 'Tag';
    	
    	// ---- Zukunft/Vergangenheut ---- 
    	if($txzz == 'future') { $tnfo = 'beginnt in'; } 
    	                 else { $tnfo = 'vorbei seit'; }
    	
    	// ---- Ausgabe Text (String) ---- 				 
    	$outstr = ''.$tnfo.' '.$d.' '.$txt_d.', '.$h.' '.$txt_h.', '.$m.' '.$txt_m.', '.$s.' '.$txt_s.''; 
    
    	return $outstr; 
    	
    }
    
    // -----------------------------------------------------------



    Nutzung dann so:

    // ----------------------------------------------------------- 
    ## $t_jetzt = '2013-02-18 08:20:05'; 
    $t_jetzt = date('Y-m-d H:i:s'); 
    
    $termin1 = '2013-02-07 10:20:10'; 
    $termin2 = '2013-02-19 14:21:45'; 
    
    
    $tz1 = zeit_format($t_jetzt, $termin1); 
    $tz2 = zeit_format($t_jetzt, $termin2); 
    
    print "<br /> Aktuelles Datum: <strong>".$t_jetzt."</strong> \n";
    print "<br />\n";
    print "<br /> Termin 1 --- <strong>".$termin1."</strong> --- ".$tz1." \n";
    print "<br /> Termin 2 --- <strong>".$termin2."</strong> --- ".$tz2." \n";
    print "<br />\n";
    
    // -----------------------------------------------------------


    Ausgabe ist dann so

    Aktuelles Datum: 2013-02-18 09:44:43
    
    Termin 1 --- 2013-02-07 10:20:10 --- vorbei seit 10 Tagen, 23 Stunden, 24 Minuten, 33 Sekunden
    Termin 2 --- 2013-02-19 14:21:45 --- beginnt in 1 Tag, 28 Stunden, 37 Minuten, 2 Sekunden


    das scheint ja zu funktionieren :)
    Danke

    PS: jetzt versuche ich das auch noch als JavaScript mit CountDown zu machen,
    also so, dass wenn Sekunden auf 60 hochgezählt, dann Minuten +1 erhöhen
    bzw. so dass nachdem Sekunden auf 00 runter, dann Minuten -1 anpassen
    usw.

    ... aber das ist wohl dann ein anderes (neues) Thema,
    mal sehen was ich bei dem 2ten Link von @hackyourlife finde
    ABER ... ich würde es ja gerne ohne jQuery hinbekommen ... ;)



    Beitrag zuletzt geändert: 18.2.2013 9:56:15 von webparade
  6. 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!