Wie bekomme ich die Zeit seit XX.XX.XXXX, XX:XX:XX herraus und angezeigt?
In der DB wurde time() gespeichert.
Bei google fand ich nichts passendes.
Wie bekomme ich die Zeit seit XX.XX.XXXX, XX:XX:XX herraus und angezeigt?
In der DB wurde time() gespeichert.
Bei google fand ich nichts passendes.
Für den aktuellen Zeitpunkt rufst du nochmal time()
auf. Die Differenz zwischen dem aktuellen Wert und dem
gespeicherten gibt eine (gute) Schätzung für die Differenz in
Sekunden.
Das ist kein exakter Wert in dem Falle, daß zwischen den beiden
Zeitpunkten eine Schaltsekunde stattgefunden hat, welche bei
den Zeitsystemen auf Computern eigentlich immer
weggemauschelt werden.
Nein, ich meine ich hab nur einmal time() drinstehen und nun soll es ausrechen, wie viel zeit vergangen ist
Das eine time() holst du eben aus der Datenbank, das ist dann
ja ein Wert in Sekunden.
Bei dem zweiten Vergleichswert muß du natürlich erstmal
definieren, wann der ist. ‘jetzt’ wäre ziemlich diffus.
Wenn du per PHP time()-Funktion in deinem Skript den zweiten
Zeitpunkt bestimmst
<?php
$jetzt=time();
$jetztZeitangabe=gmdate("Y-m-d\TH:i:s\Z",$jetzt);
?>
Sei der Wert aus der Datenbank $irgendwann, so also
<?php
$irgendwannZeitangabe=gmdate("Y-m-d\TH:i:s\Z",$irgendwann);
$ZeitDifferenzInSekunden=abs($jetzt-$irgendwann);
echo 'Die Zeitdifferenz zwischen jetzt ('.$jetztZeitangabe')
und dem Zeitpunkt in der Datenbank ('.$irgendwannZeitangabe.')
ist '.$ZeitDifferenzInSekunden.'s.';
?>
Gegebenenfalls ist auch das Vorzeichen interessant, dann läßt
man das ‘abs’ natürlich weg.
(Alles ungetestet, sollte aber sinngemäß zum Ergebnis führen)
Geht, aber kann man auch sagen:
UserXXX ist XX Stunden XX Minuten und XX Sekunden online
Das ist nun inhaltlich eine ganz andere Behauptung, die
vermutlich auch nur schwach mit den diskutierten Zeiten
zusammenhängt ;o)
Da der jeweilige Anwender ja auch einige Sekunden oder
Minuten braucht, um zu der Stelle vorzudringen, wo diese
Information steht, scheint mir besonders die Angabe von
Sekunden und Minuten recht fragwürdig.
Zudem müßte XXX dann ja auch irgendwo mit einer Genauigkeit
von deutlich unter einer Sekunde angegeben haben, wann er
seine internet-Verbindung aufgebaut hat - vermutlich weiß er
das aber selber nicht. Alternativ könnte er sich aber auch erst
irgendwann an einen Rechner gesetzt haben, der schon seit
Monaten eine internet-Verbindung aufgebaut hat, dann wird die
Angelegenheit noch dubioser. Oder in meinem Falle ist der
Rechner durchgehend an, ebenso die Sitzung mit der graphischen
Oberfläche und dem browser. Trotzdem mache ich durchaus
andere Sachen und bin dann nicht ‘online’ - da kann die Angabe
also mit einer Ungenauigkeit von Wochen oder Monaten behaftet
sein …
Es geht einfach darum, wie der unterschied zwischen jetzt und der eingetragenen zeit ist. Diese Zeit in der DB wird aktualisiert, sobald er sich erneut einloggt. Und ein User ist maximal 2 Stunden online.
Also möchtest du jetzt ‘nur’ noch wissen, wie 'Teilen mit Rest’
geht? (Hatte mein Neffe eigentlich schon auf der Grundschule
mehr oder weniger dies Jahr gelernt ;o)
Gut, wie macht man das mit PHP?
Da gibt es die Funktionen round, ceil und floor.
floor ist abrunden, das paßt hier wohl am besten.
Der Rest ergibt sich daraus, daß eine Minute 60 Sekunden
hat und eine Stunde 60 Minuten:
$minuten=floor($ZeitDifferenzInSekunden/60);
$sekunden=$ZeitDifferenzInSekunden-$minuten60;
$stunden=floor($minuten/60);
$minuten=$minuten-$stunden60;
Funktioniert! Danke!