Avatar billede leshrac Nybegynder
30. september 2008 - 15:39 Der er 8 kommentarer og
1 løsning

Regnestykke eller metode?

Lad os antage at jeg har tidspunkt A og tidspunkt B ( format: date("Y-m-d H:i:s") )... jeg bruger strtotime på dem begge for at finde ud af hvor mange sekunder der er imellem A og B

sådan her ca. strtotime(A)-strtotime(B)

For at finde ud af hvor lang tid det er i minutter divere jeg naturligvis bare med 60...

Det giver eksempelvis tallet: 153.31666666667

Nu ved jeg at der er 153.31666666667 minutter mellem tidspunkt A og B

Det resultat jeg gerne vil frem til er hvor mange minutter og sekunder der er mellem tidspunkt A og B...

Altså det resultat jeg gerne vil frem til hedder noget der ligner 153 minutter og 10 sekunder eller noget :) (har ikke lige lommeregnet det)

Nogen idéer til en PÆN formular til det? Kan godt selv lave en, men vil så frygteligt gerne optimere den :)

Mvh
Avatar billede pidgeot Nybegynder
30. september 2008 - 15:46 #1
Du skal bruge divisionsresten, også kendt som modulus:

$min = $totalsek / 60;
$sek = $totalsek % 60;
Avatar billede jakobdo Ekspert
30. september 2008 - 15:51 #2
$min = $totalsek / 60; skal nok være:
$min = floor($totalsek / 60);
Avatar billede leshrac Nybegynder
30. september 2008 - 15:57 #3
Det skal nok mere være round

$min = round($totalsek / 60);

Men havde faktisk ikke skænket modulus en tanke...

Men nu tager jeg hjem så kigger på det og svare i morgen ;)
Avatar billede pidgeot Nybegynder
30. september 2008 - 16:45 #4
Nej, floor - 18.6 minutter skal jo blive til 18 minutter og 36 sekunder.

Jeg tænkte på heltalsdivision, hvilket PHP bør udføre hvis begge operander til / er heltal, og netop runder ned - derfor fik jeg ikke skrevet floor *-)
Avatar billede showsource Seniormester
30. september 2008 - 22:16 #5
Med mysql:

$tidet = "2008-09-22 22:00:00";
$tidto = "2008-09-23 22:00:35";

$tid = mysql_query("SELECT TIMEDIFF('".$tidto."','".$tidet."') as `tid`") or die (mysql_error());

$ialt = mysql_result($tid,0,"tid");

mysql_free_result($tid);

echo $ialt;

echo"<p>";

$timer = (substr($ialt,0,2)*60);
$minuttterialt = ($timer+(substr($ialt,3,2)));

echo $minuttterialt." min. og ".substr($ialt,6,2)." sek.";
Avatar billede Slettet bruger
30. september 2008 - 23:11 #6
man kan osse bruge (int) og modulus

<?php
$sekunder=666666;

$antal_minutter=((int)$temp=$sekunder/60);
$rest_sekund=$sekunder%60;

echo"$antal_minutter minutter og $rest_sekund sekunder";
?>
Avatar billede jakobdo Ekspert
01. oktober 2008 - 08:00 #7
Eller:
$antal_minutter=intval($sekunder/60);
Avatar billede leshrac Nybegynder
01. oktober 2008 - 09:33 #8
Så er opgaven løst :)

pidgeot selvfølgelig skal det være floor, kom i tanker om det i går da jeg lagde mig til at sove :) Havde bare stirret mig blind på opgaven :)

Havde selv en masse løsninger på opgaven, men kunne ikke lige se den bedste :) Var igang med en masse lange hacks som måske var lidt dumme :)

Jeg har gjort som Pidgeot foreslog :)

Resultat:

$iMinutes = floor($iAmountOfSeconds / 60);
$iSeconds = sprintf("%02s", $iAmountOfSeconds % 60);

echo $iMinutes.':'.$iSeconds; // Giver altid det rigtige :)

Sprintf står der for at skrive 0 foran hvis der kun er et tal :) så der står 5:05 :)

Tak for hjælpen... Pidgeot jeg acceptere dit svar :)
Avatar billede pidgeot Nybegynder
01. oktober 2008 - 10:15 #9
Jeg takker

...og som vi vist kan konkludere ud fra de mange alternativer, så er der mange veje til Rom :)
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