using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Core { public class Utils { /// /// Effettua arrotondamento di un timespan ad un dato step di minuti /// /// vedere qui: https://stackoverflow.com/questions/1393696/rounding-datetime-objects /// /// DataOra originale /// Minuti di arrotondamento richeisti /// Arrotondamento x difetto (floor = true) o eccesso (false) /// public static TimeSpan TSpanRounded(TimeSpan TSpanOrig, int roundMin, bool isFloor) { long ticks = 0; roundMin = roundMin <= 0 ? 1 : roundMin; TimeOnly step = new TimeOnly(0, roundMin); if (isFloor) { ticks = TSpanOrig.Ticks / step.Ticks; } else { ticks = (TSpanOrig.Ticks + step.Ticks - 1) / step.Ticks; } TimeSpan answ = new TimeSpan(ticks * step.Ticks); return answ; } /// /// Effettua arrotondamento di un timespan ad un dato step di minuti /// /// vedere qui: https://stackoverflow.com/questions/1393696/rounding-datetime-objects /// /// DataOra originale /// Minuti di arrotondamento richeisti /// public static TimeSpan TSpanRounded(TimeSpan TSpanOrig, int roundMin) { long ticks = 0; roundMin = roundMin <= 0 ? 1 : roundMin; TimeOnly step = new TimeOnly(0, roundMin); ticks = (TSpanOrig.Ticks + step.Ticks / 2) / step.Ticks; TimeSpan answ = new TimeSpan(ticks * step.Ticks); return answ; } } }