Uhrzeit richtig darstellen

ich habe eine Variable, die bis zu einem Wert von max. 59 Minuten als zweistellige Zahl (zB. 34) dargestellt wird und wenn der Wert über eine Stunde ist (zB. 1:34).

Nun sollte diese aber mit Wert unter einer Stunde so aussehen (zB. 0:34 oder 00:34). Aber mit nachfolgendem Schnipsel hab ich keinen Erfolg, wenn der Wert über einer Stunde liegt. Die Ausgabe ist dann 00:01 bei effektivem Wert 1:34.

<?

$fahrzeit = GetValue(48697 /*[Routenplaner\Variablen\Fahrtzeit]*/);

	if ($fahrzeit < '60')
	{
		$fahrzeit = sprintf("%04d",$fahrzeit);
		$fahrzeit = str_replace('00', '00:', $fahrzeit);
	}
echo $fahrzeit;
?>

so etwa?

function macheSchoen($fahrzeit) {
	$stunden = floor($fahrzeit / 60); // Stunden abrunden
	$minuten = $fahrzeit % 60; // Restrechnung für Minuten
	if ($fahrzeit < 60) {
		$minuten = sprintf("%04d",$minuten); 
	    return str_replace('00', '00:', $minuten); 
	}
	$stunden = sprintf("%02d",$stunden); 
	return $stunden .":". $minuten;
}

echo macheSchoen(34) ."<br>";
echo macheSchoen(86) ."<br>"; 
echo macheSchoen(230) ."<br>";


Ausgabe:

00:34
01:26
03:50

Hallo Ernie

nein, das bringt nicht den gewünschten Erfolg.

hat die Variable als Inhalt nur Minuten, wird dies in der Variable so dargestellt:

34

mit deinem Script ist das Ergebnis so:

00:3401:2603:50

hat die Variable noch Stunden, wird es folgendermassen dargestellt:

1:34

mit deinem Script ist das Ergebnis immer noch so:

00:3401:2603:50

also gleich wie oben.

Hier hast was zu spielen. :wink:

$var = "45";
if(strpos($var, ":") !== false)
{
    echo $var;
}
else
{
    echo substr_replace($var, "00:", 0, 0);
}

also wenn ich 34 in mein obiges Script reinstecke, kommt bei mir wie oben beschrieben 00:34 raus.

Ich habe aber noch nicht verstanden, was Du genau als Ausgangswert hast. Ich dachte bisher 34 bei 34 Minuten und 86 bei „1 Stunde und 26“ Minuten …

Oder ist der Ausgangswert bei 1 Stunde und 26 Minunten „1:26“?

Hast Du eine Uhrzeit und willst dabei nur führenden Nullen dazu haben? Schreib mal deine Ausgangswerte für 1 Minuten, für 10 Minuten, für 45 Minuten, für 63 Minuten und für 3 Stunden 27 Minuten.

Und was später rauskommen soll …

@Rainer
danke dir, werde morgen damit spielen.

@Ernie

Schreib mal deine Ausgangswerte für 1 Minuten, für 10 Minuten, für 45 Minuten, für 63 Minuten und für 3 Stunden 27 Minuten.

1
10
45
1:03
3:27

Probiers!
Wenn das nicht funzt, dann willst du etwas, was deine Frage nicht widerspiegelt…

…und wenn es dann einheitlich aussehen soll nimmst das. :smiley:

$var = "14";

if(strpos($var, ":") !== false)
{
    if(strlen($var) == 4)
    {
        echo substr_replace($var, "0", 0, 0);
    }
    else
    {
        echo $var;
    }
}
else
{
    echo substr_replace($var, "00:", 0, 0);
}

da das spielen so schnell ging hab ich’s vorverschoben

Danke Rainer, das war’s :slight_smile:

na dann passt doch alles :slight_smile:

ich hatte einfach falsch gelesen …