type
Art = (abrunden, aufrunden, automatisch);
Runden = 1..60;
function RundeZeit(T: TTime; Minuten: Runden; Rundungsart: Art): string;
var
Zusatz, Hour, Min, Sec, MSec: Word;
begin
DecodeTime(T, Hour, Min, Sec, MSec);
case Rundungsart of
abrunden: Zusatz := 0;
aufrunden: Zusatz := Minuten;
else begin
Zusatz := 0;
Min := Min + Minuten div 2;
inc(Min, ord(Sec >= 30));
end;
end;
Min := (Min div Minuten) * Minuten + Zusatz;
if Min > 59 then begin
inc(Hour);
dec(Min, 60);
end;
if Hour > 23 then Hour := 0;
Result := FormatDateTime('hh:mm', EncodeTime(Hour, Min, Sec, MSec));
end;
// Beispielaufruf
procedure TForm1.Button3Click(Sender: TObject);
begin
Label1.Caption := RundeZeit(StrToTime('13:47:29'), 15, automatisch);
end;