Archiv verlassen und diese Seite im Standarddesign anzeigen : Ausrechnen von Minuten Sekunden... mit unixtime und timestamp
Hallo,
also mein Problem ist es das ich die unixtime minux timestamp rechnen will
die ausgabe ist denn in sekunden. Und das möchte ich gerne in Minuten oder Stunden je nachdem ausgerechnet haben
das ganze soll dann so ausgegeben werden
y w d h m s
natürlich soll nicht bei sekunden angaben steht 0y 0w 0d 0h u.s.w.
sondern nur 5s z.b.
habe mal so angefangen
$zeit = time();
$aktuell = $zeit - $timestamp;
$pretime = $aktuell / 60;
echo "Dieser Eintrag ist $pretime Minuten alt.";
:D wie ihr seht sind das ziehmlich viele Zeilen um die Minuten rauszukriegen und manchmal bekomme ich sogar "5.33333333333" raus.
Dabei möchte ich nur die volle Minuten ausgegeben haben.
Hat jemand eine gute Idee wie ich sowas kürzer mit wenig Zeilen realisieren kann ?
:confused: :(
na wenns um die anzahl der zeilen geht dann machs so:
$pretime = (time() - $timestamp) / 60;
wenn du nur ganze zahlen anzeigen lassen willst hilft dir round (http://at2.php.net/manual/en/function.round.php) weiter
onemorenerd 11-02-2006, 17:16 Folgendes berechnet die Zeitdifferenz mit einer Zeile und gibt erst ab dem ersten Nicht-Nullwert aus:
$diffs = explode('|', date('y|w|d|h|m|s', $zeit-$timestamp));
foreach ($diffs as $index => $value) {
if ($value != 0) {
$offset = $index;
break;
}
}
for ($i = $offset, $i < count($diffs); $i++) {
echo $diffs[$i];
}
Ungetestet!
Original geschrieben von onemorenerd
Folgendes berechnet die Zeitdifferenz mit einer Zeile und gibt erst ab dem ersten Nicht-Nullwert aus:
$diffs = explode('|', date('y|w|d|h|m|s', $zeit-$timestamp));
foreach ($diffs as $index => $value) {
if ($value != 0) {
$offset = $index;
break;
}
}
for ($i = $offset, $i < count($diffs); $i++) {
echo $diffs[$i];
}
Ungetestet!
habe es so zum laufen bekommen
$diffs = explode('|', date('y|w|d|h|m|s', $zeit-$timestamp));
foreach ($diffs as $index => $value) {
if ($value != 0) {
$offset = $index;
break;
}
}
for ($i = $offset, $i < count($diffs); $i++;)
echo $diffs[$i];
aber dann zeigt er mir garnicht an
bei deinen script meine er bei dieser zeile ist ) unexpecting ...expecting ;
for ($i = $offset, $i < count($diffs); $i++) {
bei deinen script meine er bei dieser zeile ist ) unexpecting ...expecting ;
for ($i = $offset, $i < count($diffs); $i++) {
glaub das sollte so aussehen
for ($i = $offset; $i < count($diffs); $i++) {
richtig und wenn ich das richtig sehe müßte er durch $diffs alles ausgeben aber tut er nicht
onemorenerd 11-02-2006, 19:15 $timediff = $zeit - $timestamp;
$y = intval($timediff / 31536000);
$remain = $timediff % 31536000;
$m = intval($remain / 2628000);
$remain = $timediff % 2628000;
$d = intval($remain / 86400);
$remain = $timediff % 86400;
$h = intval($remain / 3600);
$remain = $remain % 3600;
$i = intval($remain / 60);
$s = $remain % 60;
echo "$y Jahre, $m Monate, $d Tage, $h Stunden, $i Minuten, $s Sekunden";
klasse danke und mit welchen befehlen kriege ich das hin das year erst angezeigt wird wenn es auch wirklich 1 jahr alt ist ?
sieht ja blöd aus wenn da 0 Jahre, 0 Monate, 0 Tage u.s.w. steht
onemorenerd 11-02-2006, 20:11 echo ($y ? "$y Jahre, " : '')
.($m ? "$m Monate, " : '')
.($d ? "$d Tage, " : '')
.($h ? "$h Stunden, " : '')
.($i ? "$i Minuten, " : '')
.$s Sekunden";
ich danke dir
aber
."$s Sekunden";
:D
kann ich das auch irgendwie in eine Variable reinmachen sowas wie
$zeitangabe = ($y ? "$y Jahre, " : '')
.($m ? "$m Monate, " : '')
.($d ? "$d Tage, " : '')
.($h ? "$h Stunden, " : '')
.($i ? "$i Minuten, " : '')
.$s Sekunden";
?
da ist später im text nur noch
bla bla ist $zeitangabe alt.
onemorenerd 11-02-2006, 21:55 Natürlich kannst du. Alles was nach echo kommt, kannst du auch einer Variablen zuweisen. Allerdings hatte ich das eine " tatsächlich vergessen. Das solltest du schon einbauen, sonst klappts nicht.
$zeit = ($y ? "$y Jahre, " : '')
.($m ? "$m Monate, " : '')
.($d ? "$d Tage, " : '')
.($h ? "$h Stunden, " : '')
.($i ? "$i Minuten, " : '')
."$s Sekunden";
echo "bla bla ist $zeit alt."
jo danke jetzt aber :cool:
hab nochmal eine frage dazu :D
$timediff = $zeit - $time;
$y = intval($timediff / 31536000);
$remain = $timediff % 31536000;
$m = intval($remain / 2628000);
$remain = $timediff % 2628000;
$d = intval($remain / 86400);
$remain = $timediff % 86400;
$h = intval($remain / 3600);
$remain = $remain % 3600;
$i = intval($remain / 60);
$s = $remain % 60;
$timeresult = ($y ? "$y<font color=\"#FF9900\">y</font>" : '')
.($m ? "$m<font color=\"#FF9900\">m</font> " : '')
.($d ? "$d<font color=\"#FF9900\">d</font> " : '')
.($h ? "$h<font color=\"#FF9900\">h</font> " : '')
.($i ? "$i<font color=\"#FF9900\">m</font> " : '')
."$s<font color=\"#FF9900\">s</font>";
so soll der code ja sein und ich habe jetzt 10 verschiedene $time werte
die in einer Variable liegen
$time1
$time2
...
$time10
ich könnte ja jetzt die 17 zeilen 10 mal neu einfügen und immer "$time" ändern
aber ich glaube das würde mein script wieder langsamer machen und größer gibt es da noch eine andere möglichkeit ?
schön wäre es wenn ich das ganze denn auch in verschiedene Variablen bekommen könnte ...damit ich das später einfügen kann wo ich will also
$timeresult1
$timeresult2
...
$timeresult10
z.b.
onemorenerd 12-02-2006, 17:21 Stichwort "variable Variablen".
function calcDiff($zeit, $time) {
$timediff = $zeit - $time;
$y = intval($timediff / 31536000);
$remain = $timediff % 31536000;
$m = intval($remain / 2628000);
$remain = $timediff % 2628000;
$d = intval($remain / 86400);
$remain = $timediff % 86400;
$h = intval($remain / 3600);
$remain = $remain % 3600;
$i = intval($remain / 60);
$s = $remain % 60;
return ($y ? "$y<font color=\"#FF9900\">y</font>" : '')
.($m ? "$m<font color=\"#FF9900\">m</font> " : '')
.($d ? "$d<font color=\"#FF9900\">d</font> " : '')
.($h ? "$h<font color=\"#FF9900\">h</font> " : '')
.($i ? "$i<font color=\"#FF9900\">m</font> " : '')
."$s<font color=\"#FF9900\">s</font>";
}
for ($i = 1; $i <= 10; $i++) {
${timeresult$i} = calcDiff($zeit, ${time$i});
}
Parse error: parse error, unexpected T_VARIABLE
${timeresult$i} = calcDiff($zeit, ${time$i});
onemorenerd 12-02-2006, 18:02 ${timeresult.$i} = calcDiff($zeit, ${time.$i});
Aber du darfst gern auch mal selber denken (oder auf http://php.net/manual nachschauen)!
Notice: Use of undefined constant timeresult - assumed 'timeresult' in /var/www/test4.php on line 72
Notice: Use of undefined constant time - assumed 'time' in /var/www/test4.php on line 72
Notice: Undefined variable: time1 in /var/www/test4.php on line 72
${timeresult.$i} = calcDiff($zeit, ${time.$i});
kommt sowas nicht immer wenn Strings nicht gequotet sind ? oder so ?
onemorenerd 12-02-2006, 19:27 Das meine ich mit selber denken ...
habe ich trotzdem scheint an deinen code was falsch zu sein
oder ich mache einen fehler weil
Undefined variable: time1
....
Undefined variable: time10
function calcDiff($zeit, $time) {
$timediff = $zeit - $time;
$y = intval($timediff / 31536000);
$remain = $timediff % 31536000;
$m = intval($remain / 2628000);
$remain = $timediff % 2628000;
$d = intval($remain / 86400);
$remain = $timediff % 86400;
$h = intval($remain / 3600);
$remain = $remain % 3600;
$i = intval($remain / 60);
$s = $remain % 60;
return ($y ? "$y<font color=\"#FF9900\">y</font>" : '')
.($m ? "$m<font color=\"#FF9900\">m</font> " : '')
.($d ? "$d<font color=\"#FF9900\">d</font> " : '')
.($h ? "$h<font color=\"#FF9900\">h</font> " : '')
.($i ? "$i<font color=\"#FF9900\">m</font> " : '')
."$s<font color=\"#FF9900\">s</font>";
}
for ($i = 1; $i <= 10; $i++) {
${'timeresult'.$i} = calcDiff($zeit, ${'time'.$i});
}
|
-
- |