webForumDet fria alternativet

Räkna anntal timmar mällan 2 klockslag

PHP

12 svar · 977 visningar · startad av tubaren

Medlem sedan mars 20097 inlägg
Frågan#1

Jag har en databas där det är lagrat tider som jag vill veta timmarna
som är i mellan, men kommer inte på något bra sätt att lösa det på :P
så här har jag tänkt att det ska fungera

Tiderna ligger i en mysql db och Tid1 = 11:00 och Tid2 16:30
Från tid1 till tid2 är det 5,5 timmar hur får jag en php kod att
komma fram till samma slutsat som jag :P ?

jag kom på en lösning om jag skulle haft hela timmar enbart men nu
behöver jag halvtimmar med

tackar på förhand :e

Medlem sedan mars 2007845 inlägg
#2

Om du sparar tiden som ett unix timestamp så använder du Tid2 - Tid1 / 3600

Medlem sedan mars 200921 inlägg
#3
<?php
/*
Produced by draqir.se
From lib draqir_time.php
*/
function TidMellanKlockslag($tid1,$tid2,$format){
  list($t1,$m1) = split(':',$tid1);
  list($t2,$m2) = split(':',$tid2);
  
  $tid1 = $t1.$m1;
  $tid2 = $t2.$m2;
  
  if($tid2>$tid1){ //Kollar vilken tid som är störst.
   $timmar = $t2-$t1;
    if($m1>$m2){
      $minuter = 60+$m2-$m1;
      $timmar--;
    } else {
      $minuter = $m2-$m1;
    }
  } else { 
   $timmar = $t1-$t2;      
    if($m2>$m1){
      $minuter = 60+$m1-$m2;
      $timmar--;
    } else { 
      $minuter = $m1-$m2;
    }
  }
  echo "Det &auml;r ";
  if($format == "enbart_halvtimmar"){
    $minuter = ($minuter/60)*10;
     if($timmar != 0){
      echo $timmar . ",";
    }
    echo $minuter . " timmar mellan klockslagen<br/>";
  } else {
    if($timmar != 0){
      echo $timmar . " timmar och ";
    }
    echo $minuter . " minuter mellan klockslagen<br/>";
  }
}

TidMellanKlockslag("11:00","16:30","enbart_halvtimmar"); // utskrift: "Det är 5,5 timmar mellan klockslagen"
TidMellanKlockslag("22:49","12:32"); // utskrift: Det är 10 timmar och 17 minuter mellan klockslagen
TidMellanKlockslag("12:09","12:32"); // utskrift: Det är 23 minuter mellan klockslagen
?>
Medlem sedan mars 2007845 inlägg
#4

Om du ska använda Dragir's funktion så tänk på att sätta ett default för $format. Ex function TidMellanKlockslag($tid1, $tid2, $format = '')

Sen kanske någon kan sälja ett par mellanslag till Dragir så blir koden mycket mer lättläst.

Medlem sedan mars 200921 inlägg
#5

drew skrev:

Om du ska använda Dragir's funktion så tänk på att sätta ett default för $format. Ex function TidMellanKlockslag($tid1, $tid2, $format = '')

Sen kanske någon kan sälja ett par mellanslag till Dragir så blir koden mycket mer lättläst.

Jag sätter softtabs till tre nästa gång. Tack för att du påpekade det!

Det är för övrigt inte nödvändigt att sätta default parametrar i de nyare versionerna av php, om man vill så kan man ändra deklarationen av funktionen till

function TidMellanKlockslag($tid1,$tid2,$format = 'inget'){

Om man vill att det ska fungera med äldre versioner.

Medlem sedan mars 2007845 inlägg
#6

Det är inte nödvändigt, men det producerar en varning. En del servrar visar varningar och då kommer din kod att visa det. Om du sätter error_reporting = E_ALL i din php.ini så ser du.

Dessutom är det bättre att spara tider som UNIX timestamp och formatera dom när dom ska visas.

Medlem sedan mars 20097 inlägg
#7

Tackar =)

Jag börjar att annvända Draqir lösning den värka fungera fint
med lite små ändringar =)

Tack tack =) :e

Medlem sedan sep. 20025 506 inlägg
#8

Varför inte bara göra något i stil med ABS(TIME_TO_SEC(TIMEDIFF(tid1, tid2))/3600) direkt i MySQL-frågan?

Medlem sedan mars 20097 inlägg
#9

Variabel

Jag skulle villja ha denna som en variabel
TidMellanKlockslag("$sol","$mol","enbart_halvtimmar"); // utskrift: "Det är 5,5 timmar mellan klockslagen"

alltså det den skriver ska vara en variabel som heter ex: $gam

jag behöver det för att göra yterligare en uträkning av tiden senare

försökte men får inte rätt på det :/

Medlem sedan mars 200921 inlägg
#10

Ändra till

return $timmar . "," . $minuter;

istället för echo

$gam = TidMellanKlockslag("$sol","$mol","enbart_halvtimmar");
Medlem sedan mars 20097 inlägg
#11

hm var ska jag lägga
return $timmar . "," . $minuter;

?

Medlem sedan mars 20097 inlägg
#12

oj jo jag fixade det de va en dum fråga :P men tack som f..n =)

Medlem sedan mars 20097 inlägg
#13

om jag skriver $gam = TidMellanKlockslag("$sol","$mol","enbart_halvtimmar");
så bilir det presis som echo den skriver ut det ändån :/

276 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
148 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)