Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Ausrechnen von Minuten Sekunden... mit unixtime und timestamp [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Ausrechnen von Minuten Sekunden... mit unixtime und timestamp


 
toffel
11-02-2006, 16:55 
 
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: :(

 
4011
11-02-2006, 17:14 
 
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!

 
toffel
11-02-2006, 17:44 
 
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++) {

 
4011
11-02-2006, 17:47 
 
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++) {

 
toffel
11-02-2006, 18:01 
 
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";

 
toffel
11-02-2006, 19:40 
 
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";

 
toffel
11-02-2006, 20:32 
 
ich danke dir

aber


."$s Sekunden";




:D

 
toffel
11-02-2006, 21:23 
 
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."

 
toffel
11-02-2006, 22:33 
 
jo danke jetzt aber :cool:

 
toffel
12-02-2006, 16:44 
 
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>&nbsp;" : '')
.($d ? "$d<font color=\"#FF9900\">d</font>&nbsp;" : '')
.($h ? "$h<font color=\"#FF9900\">h</font>&nbsp;" : '')
.($i ? "$i<font color=\"#FF9900\">m</font>&nbsp;" : '')
."$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>&nbsp;" : '')
.($d ? "$d<font color=\"#FF9900\">d</font>&nbsp;" : '')
.($h ? "$h<font color=\"#FF9900\">h</font>&nbsp;" : '')
.($i ? "$i<font color=\"#FF9900\">m</font>&nbsp;" : '')
."$s<font color=\"#FF9900\">s</font>";
}

for ($i = 1; $i <= 10; $i++) {
${timeresult$i} = calcDiff($zeit, ${time$i});
}

 
toffel
12-02-2006, 17:42 
 
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)!

 
toffel
12-02-2006, 18:56 
 
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 ...

 
toffel
13-02-2006, 17:29 
 
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>&nbsp;" : '')
.($d ? "$d<font color=\"#FF9900\">d</font>&nbsp;" : '')
.($h ? "$h<font color=\"#FF9900\">h</font>&nbsp;" : '')
.($i ? "$i<font color=\"#FF9900\">m</font>&nbsp;" : '')
."$s<font color=\"#FF9900\">s</font>";


}
for ($i = 1; $i <= 10; $i++) {
${'timeresult'.$i} = calcDiff($zeit, ${'time'.$i});
}

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:30 Uhr.