Avatar billede dugi Nybegynder
14. december 2004 - 18:18 Der er 4 kommentarer og
1 løsning

Online tid - time() problem

Hej Eksperter.

Jeg er ved at prøve at lave et script, som tæller en brugeres online tid. Altså når en bruger logger ind på mit site, blir time(); gemt på det tidspunkt han logger ind.
  Så for hvergang han laver en side visning, skal denne tid opdateres ved at bruge den nuværende time();
  Altså man stiller time(); fra han var logget ind op mod time(); på side visningen.

Har aldrig rigtig "leget" med time(); så har prøvet mig frem for sjov, og kom frem til følgende kode:

$unixtime = bruger["logindtime"];
$unixnow  = time();

$betweenunix = $unixnow-$unixtime;
$dateunix = date("i:s", $betweenunix);

echo "Unix tider trukket fra hinanden: ".$betweenunix."";
echo "<br><br>";
echo "Unix i date format: ".$dateunix."";

Dette fungere udenmærket, men mit problem er... jeg vil også gerne vise timerne.

Men hvis jeg laver:
$dateunix = date("H:i:s", $betweenunix);

Så skriver den automatisk "hour" til en time. Hvilket jo ikke passer. Nogen som har et færdiglavet script, eller som evt. lige kan komme på et "fix" til mit lille "nybegynder-time();-script" ? :)


På forhånd tusind, tusind tak :)

Med Venlig Hilsen
Morten 'DuGi' Rugaard
Avatar billede cpfrande Nybegynder
14. december 2004 - 18:51 #1
Hej,

Jeg ville slet ikke bruge date() til at omregne min tid til den tid-format du ønsker.

Jeg ville i stedet beregne det matematisk. time() er jo i sekunder, så differencen på $unixtime og $unixnow vil jo også være i sekunder.

Så kunne du f.eks. beregne det sådan her:

<?php
$diff = $betweenunix; // Jeg ville selv kalde den $diff og ikke $betweenunix
$hours = floor($diff / (60 * 60));
$minutes = floor(($diff - ($hours * (60 * 60)) / 60);
$seconds = $diff - ($hours * (60 * 60)) - ($minutes * 60);
?>

Hvis du så selv ønsker det, kan du jo også vælge at beregne om brugeren har været online i dage. I mit tilfælde vil der blot blive skrevet f.eks. 26 timer og 53 minutter, og ikke 1 dag, 2 timer og 53 minutter :)

Håber det hjalp dig lidt :)

Mvh.
Kristian
Avatar billede cpfrande Nybegynder
14. december 2004 - 18:53 #2
<?php
$diff = $betweenunix; // Jeg ville selv kalde den $diff og ikke $betweenunix
$hours = floor($diff / (60 * 60));
$minutes = floor($diff - ($hours * (60 * 60)) / 60);
$seconds = $diff - ($hours * (60 * 60)) - ($minutes * 60);
?>

Der var lige en tegn-sætningsfejl. Der kom et ( for meget med ;)
Avatar billede cpfrande Nybegynder
14. december 2004 - 18:58 #3
Tak tak for points :)
Avatar billede cpfrande Nybegynder
14. december 2004 - 19:08 #4
<?php
$diff = $betweenunix; // Jeg ville selv kalde den $diff og ikke $betweenunix
$hours = floor($diff / (60 * 60));
$minutes = floor(($diff - ($hours * (60 * 60))) / 60);
$seconds = $diff - ($hours * (60 * 60)) - ($minutes * 60);
?>
Avatar billede cpfrande Nybegynder
14. december 2004 - 19:08 #5
sådan... nu er den helt rigtig :)
Jeg havde ikke sat et ( for meget med... men et ) for lidt med ;)

Hygge!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester