---
title: "Räkna anntal timmar mällan 2 klockslag"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/177760-räkna-anntal-timmar-mällan-2-klockslag"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "tubaren"
published: "2009-03-31T05:07:23.000Z"
updated: "2009-03-31T21:09:47.000Z"
replies: 12
views: 986
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/177760-räkna-anntal-timmar-mällan-2-klockslag"
---

# Räkna anntal timmar mällan 2 klockslag

## #1 — tubaren, 2009-03-31T05:07Z

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

Permalänk: https://www.webforum.nu/p/177760

## #2 — drew, 2009-03-31T10:18Z

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

Permalänk: https://www.webforum.nu/p/2177174

## #3 — Draqir, 2009-03-31T11:08Z

```php
<?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
?>
```

Permalänk: https://www.webforum.nu/p/2177178

## #4 — drew, 2009-03-31T11:12Z

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.

Permalänk: https://www.webforum.nu/p/2177179

## #5 — Draqir, 2009-03-31T11:27Z

> **[drew skrev:](https://www.webforum.nu/p/1462390)**
>
> 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 

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

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

Permalänk: https://www.webforum.nu/p/2177182

## #6 — drew, 2009-03-31T11:42Z

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.

Permalänk: https://www.webforum.nu/p/2177183

## #7 — tubaren, 2009-03-31T12:33Z

Tackar =)

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

Tack tack =)  :e

Permalänk: https://www.webforum.nu/p/2177194

## #8 — Mr. N., 2009-03-31T12:50Z

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

Permalänk: https://www.webforum.nu/p/2177197

## #9 — tubaren, 2009-03-31T12:52Z

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 :/

Permalänk: https://www.webforum.nu/p/2177198

## #10 — Draqir, 2009-03-31T13:12Z

Ändra till

```php
return $timmar . "," . $minuter;
```

istället för echo

```php
$gam = TidMellanKlockslag("$sol","$mol","enbart_halvtimmar");
```

Permalänk: https://www.webforum.nu/p/2177203

## #11 — tubaren, 2009-03-31T20:09Z

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

?

Permalänk: https://www.webforum.nu/p/2177257

## #12 — tubaren, 2009-03-31T20:15Z

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

Permalänk: https://www.webforum.nu/p/2177259

## #13 — tubaren, 2009-03-31T21:09Z

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

Permalänk: https://www.webforum.nu/p/2177270

---

Tråden på webben: https://www.webforum.nu/amne/php/177760-räkna-anntal-timmar-mällan-2-klockslag
