Существует ли в Delphi процедура, которая округляет значение TDateTime до ближайшей секунды, ближайшего часа, ближайших 5 минут, ближайшие полчаса и т. д.?
ОБНОВЛЕНИЕ:
Габр дал ответ. Были небольшие ошибки, возможно, из-за полного отсутствия тестирования; -)
Я немного почистил и протестировал, и вот финальная (?) Версия:
function RoundDateTimeToNearestInterval(vTime : TDateTime; vInterval : TDateTime = 5*60/SecsPerDay) : TDateTime;
var
vTimeSec,vIntSec,vRoundedSec : int64;
begin
//Rounds to nearest 5-minute by default
vTimeSec := round(vTime * SecsPerDay);
vIntSec := round(vInterval * SecsPerDay);
if vIntSec = 0 then exit(vTimeSec / SecsPerDay);
vRoundedSec := round(vTimeSec / vIntSec) * vIntSec;
Result := vRoundedSec / SecsPerDay;
end;