Formatierte Ausgabe von Timestamp-Differenz ?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abgelaufen echo
abgelaufen vergangenheit
abstand
aktuelles datum
ausgabe
beginnen
code
countdown
dank
datum
differenz
minute
negative zahl
sekunde
stunden
tag
termin
url
ziel
zukunft
-
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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… -
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.'; ?>
-
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage