alignTo method
Aligns this date to a grid of the specified interval.
For example, alignTo(15, TimePrecision.minute) aligns to
15-minute intervals (0, 15, 30, 45 minutes).
Implementation
Hora alignTo(int interval, TimePrecision precision) {
final truncated = truncateTo(precision);
final value = switch (precision) {
TimePrecision.year => year,
TimePrecision.quarter => quarter,
TimePrecision.month => month,
TimePrecision.week => isoWeek,
TimePrecision.day => day,
TimePrecision.hour => hour,
TimePrecision.minute => minute,
TimePrecision.second => second,
TimePrecision.millisecond => millisecond,
};
final aligned = (value ~/ interval) * interval;
final diff = value - aligned;
return truncated.subtract(diff, precision.toUnit);
}