online seit

anyany

Mitglied
hi ich wollte gerne mal ein "online seit" script basteln
ausgangssituation: ich hab einen sekunden wert und denn will ich jetzt in y/m/d/ H:i:s umwandeln wie krieg ich jetzt also aus meinen sekunden dieses format?
ansatz:
PHP:
$time; //loginzeit
$time2; //aktuelle zeit
$secs = $time2-$time;
echo gmdate('y/m/d H:i:s',$secs);
dann wird aber das ausgegeben:
71/01/02 00:00:01

ich weiss einfach nicht weiter, hat jemand eine idee?
 
Hi,

wenn Du ausgeben willst, seit wann (welchem Datum) ein User online ist, musst Du doch einfach nur die Loginzeit formatiert ausgeben, nicht die Differenz aus aktueller und Loginzeit.

LG
 
Hi,

und achte bitte zukünftig in deinen Beiträgen auf die Netiquette (Nr.15) bzgl. deiner unerwünschten durchgängigen Kleinschreibung.

Vielen Dank!

mfg Maik
 
Hallo,
also ich drück mich nochmal genauer aus, ich habe 2 Variable die erste Variable enthält den Timestamp wann der User sich eingeloggt und hat und die zweite enthält den aktuellen Timestamp.
Aus der Differenz der beiden Variablen bekomm ich einen Sekundenwert zurück. Dieser entspricht der Zeit wielange ein User Online ist seit seinem Login.
Jetzt soll er mir, rein theoretisch gesehen, auch noch die Minuten, Stunden, Tage, Monate, Jahre ausgeben die der User am Stück Online ist.
Sozusagen nich den UNIX Timestamp sondern mein eigener Timestamp seit Login des Users.
 
Hi,

das Problem ist, Dein "eigener" Timestamp ist kein Timestamp. Ein UNIX-Timestamp ist die Anzahl Sekunden vom 1.1.1970 an gerechnet.
In Tage, Stunden, Minuten musst Du das also selbst umrechnen.

LG
 
Hallo,
ja das habe ich auch schon mitbekommen, bloss meine Frage war wie ich das umrechne, mir fällt echt nichts mehr ein. Mein Variante will ja nicht so richtig :S
 
Hi,

Du kannst die Datums- und Zeitfunktionen von PHP nicht benutzen, da Du kein Datum oder Zeitstempel hast. Du musst das komplett zu Fuss rechnen.

Eine Minute hat 60 Sekunden.
Eine Stunde hat 60 Minuten.
Ein Tag hat 24 Stunden.

LG
 
Hallo,
ok und wie mach ich das dann mit Tagen, Monaten und Jahren?
7 Tage ist mir klar aber es gibt ja unterschiedlich lange Monate und Jahre(Schaltjahr)
 
ich hab jetzt ein script gefunden was das alles erledigt:
PHP:
<?php
/**
* Anzahl von Sekunden in Jahre, Monate, ..., Minuten und Sekunden umrechnen
*/

function tellSeconds($NumberOfSeconds)
{

    $time_map = array(

     'Jahre'     => 31536000,    # 365 Tage
     'Monate'    => 2592000,    # 30 Tage
     'Wochen'    => 604800,    # 7 Tage
     'Tage'     => 86400,
     'Stunden'     => 3600,
     'Minuten'     => 60,
     'Sekunden'     => 1,
    );

    $SecondsTotal     = $NumberOfSeconds;

    $SecondsLeft     = $SecondsTotal;

    $stack = array();

    foreach ($time_map as $k => $v) {

        if ($SecondsLeft < $v || $SecondsLeft == 0) {
                continue;
        } else {
                $amount = floor($SecondsLeft/ $v);
                    $SecondsLeft = $SecondsLeft % $v;

            $label = ($amount>1)
                ? $k
                : substr($k, 0, -1);

                    $stack[] = sprintf('<strong>%s</strong> %s', $amount, $label);
        }
    }
    $cnt = count($stack);

    if ($cnt > 1){
        $tmp1 = array_pop($stack);
        $tmp2 = array_pop($stack);
        array_push ($stack, $tmp2 . ' und '.$tmp1);
    };
    $result = join (', ', $stack);
    return $result;

}

if (isset($_POST['seconds'])) {
    $_POST['seconds'] = intval($_POST['seconds']);
    $result = tellSeconds($_POST['seconds']);
}else{
    $_POST['seconds'] = '123456789';
    $result = '';
}

echo <<< EOT
<p>Anzahl der Sekunden eingeben.</p>

<form action="{$_SERVER['PHP_SELF']}" method="post">
<input type="text" name="seconds" value="{$_POST['seconds']}" />
<input type="submit" value="Sekunden umrechnen" />
</form>
$result
EOT;

?>
kann mir mal wer erklaeren wie das funktioniert?
ich find mich dadrin leider nich zurecht :S
 
Zurück