Haltezeit als Zeitfeld: Stunden und Minuten statt einer Minutenzahl
Dasselbe <input type="time"> wie von/bis daneben, nur als Dauer gelesen -
"03:30" tippt sich leichter als "210" und steht in derselben Zeile wie die
beiden Uhrzeiten darueber. Dass es keine Uhrzeit meint, sagt der Text
ringsum ("erst nach ... am Stueck"); die Kopfzeile des Rahmens schreibt es
beim Tippen aus.
Die Obergrenze ist damit 23:59 statt 24 Stunden - genau das, was ein
Zeitfeld hergibt.
Dabei aufgefallen: haltezeitKurz() rundete auf Zehntelstunden und machte aus
23:59 die Auskunft "24 Std.". Eine Haltezeit, die laenger aussieht als sie
ist, ist genau die falsche Auskunft - krumme Werte stehen jetzt als
"23 Std. 59 Min." da, halbe behalten ihr Komma.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+24
-13
@@ -232,11 +232,12 @@ function lockoutChoices()
|
||||
* Wasserhahn erst nach Stunden. Eine Stufenliste traefe immer nur die Haelfte
|
||||
* der Faelle.
|
||||
*
|
||||
* Grenzen gibt es trotzdem. Unter null ist keine Zeit; oberhalb eines Tages
|
||||
* Grenzen gibt es trotzdem. Unter null ist keine Zeit; oberhalb von 23:59
|
||||
* waere es keine Haltezeit mehr, sondern ein Dauerzustand, den man besser
|
||||
* anders abfragt - und das Zeitfenster schneidet sie ohnehin ab. Gerechnet
|
||||
* wird in ganzen Minuten, weil der Editor Minuten anbietet und Sekunden hier
|
||||
* nichts gewinnen: die Messwerte kommen viel seltener.
|
||||
* anders abfragt - und das Zeitfenster schneidet sie ohnehin ab. Die Obergrenze
|
||||
* ist genau das, was ein Zeitfeld hergibt. Gerechnet wird in ganzen Minuten,
|
||||
* weil der Editor Stunden und Minuten anbietet und Sekunden hier nichts
|
||||
* gewinnen: die Messwerte kommen viel seltener.
|
||||
*/
|
||||
function haltezeitPruefen($sekunden)
|
||||
{
|
||||
@@ -244,26 +245,36 @@ function haltezeitPruefen($sekunden)
|
||||
if ($sekunden < 0) {
|
||||
$sekunden = 0;
|
||||
}
|
||||
if ($sekunden > 86400) {
|
||||
$sekunden = 86400;
|
||||
if ($sekunden > 86340) { // 23:59, mehr kann das Zeitfeld nicht
|
||||
$sekunden = 86340;
|
||||
}
|
||||
return intdiv($sekunden, 60) * 60;
|
||||
}
|
||||
|
||||
/**
|
||||
* Eine Haltezeit in Worten - "45 Min.", "1 Std.", "3,5 Std."
|
||||
* Eine Haltezeit in Worten - "45 Min.", "1 Std.", "3,5 Std.", "23 Std. 59 Min."
|
||||
*
|
||||
* Minuten bis eine Stunde, darueber Stunden: "210 Min." muss man umrechnen,
|
||||
* "3,5 Std." nicht. Die Nachkommastelle faellt weg, wenn sie null ist.
|
||||
* "3,5 Std." nicht. Halbe Stunden bekommen ihr Komma, alles andere Krumme die
|
||||
* Minuten ausgeschrieben - gerundet wird nicht. Aus 23:59 wurde sonst
|
||||
* "24 Std.", und eine Haltezeit, die laenger aussieht als sie ist, waere
|
||||
* genau die falsche Auskunft.
|
||||
*/
|
||||
function haltezeitKurz($sekunden)
|
||||
{
|
||||
$sekunden = intval($sekunden);
|
||||
if ($sekunden < 3600) {
|
||||
return intdiv($sekunden, 60) . " Min.";
|
||||
$minuten = intdiv(intval($sekunden), 60);
|
||||
if ($minuten < 60) {
|
||||
return $minuten . " Min.";
|
||||
}
|
||||
$zahl = number_format($sekunden / 3600, 1, ",", "");
|
||||
return rtrim(rtrim($zahl, "0"), ",") . " Std.";
|
||||
$stunden = intdiv($minuten, 60);
|
||||
$rest = $minuten % 60;
|
||||
if ($rest === 0) {
|
||||
return $stunden . " Std.";
|
||||
}
|
||||
if ($rest === 30) {
|
||||
return $stunden . ",5 Std.";
|
||||
}
|
||||
return $stunden . " Std. " . $rest . " Min.";
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user