Danke für eure Hilfe. Ich habe das folgendermaßen gelößt, um doppelten Code zu vermeiden.
Die Parameter (Integer und String) sind für mich genau passend, da ich keine TDateTime-Werte übergeben möchte (was woanders wieder mehr doppelten Code verursachen würde):
Delphi-Quellcode:
function ChangeTime(const Timestamp: Integer; const NewTime: string): Integer;
var
aNewTime, aDateTime: TDateTime;
begin
aNewTime := StrToTime(NewTime);
aDateTime := UnixToDateTime(Timestamp);
aDateTime := RecodeTime(aDateTime, System.DateUtils.HourOf(aNewTime), System.DateUtils.MinuteOf(aNewTime), System.DateUtils.SecondOf(aNewTime), 000);
Result := DateTimeToUnix(aDateTime);
end;
Delphi-Quellcode:
procedure Test;
begin
unixTimestamp := ChangeTime(DateTimeToUnix(IncDay(Date)), '17:00:00');
// bzw
unixTimestamp := TDateUtils.ChangeTime(1504003327, '17:00:00');
end;