webForumDet fria alternativet

Räkna ut procent

2 svar · 928 visningar · startad av Inferis

InferisMedlem sedan sep. 2000670 inlägg
#1

Hej!
Jag förstår inte vad jag gör för fel, eller går det inte att dela tid?

Försöker tex dela 01:00:00 med 00:30:00 vilket borde ge 50%. Men det blir 0%. Det verkar som att timmarna delas som det ska, men inte minuterna?

$procenten = $teltid / $timmarna * 100
echo $procenten;
metalboyMedlem sedan jan. 2005953 inlägg
#2

Om du försöker dividera strängen "01:00:00" med strängen "00:30:00" så kommer PHP göra sitt bästa för att tolka dessa värden som tal. I detta fall blir det 1/0 och du får en varning om division med 0 (om du har ställt in så att varningar visas). Kvoten av denna division blir 0, och 0 * 100 är 0.

Du behöver göra om $teltid och $timmarna till sekunder för att kunna utföra beräkningar på dem. Om du delar 01:00:00 med 00:30:00 borde väl resultatet dessutom bli 200%? 00:30:00 dividerat med 01:00:00 blir däremot 50%.

För att göra om strängrepresentationen av tiderna till sekunder kan du till exempel göra så här:

<?php
function toSec($value) {
	if (preg_match('/^(\d+):(\d+):(\d+)$/', $value, $matches)) {
		$hours = $matches[1];
		$minutes = $matches[2];
		$seconds = $matches[3];

		return ($hours * 60 * 60) + ($minutes * 60) + $seconds;
	}
	return false;
}

$teltid = "00:30:00";
$timmarna = "01:00:00";

$procent = toSec($teltid) / toSec($timmarna) * 100;
echo $procent;
InferisMedlem sedan sep. 2000670 inlägg
#3

Snyggt! Ja, jag vände på det. Teltid ska ju delas med timmar.
Använder samma lösning i Excel, där funkar det. Men inte i php alltså.
Tack så mycket! Nu fick jag till det!

133 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)