using System;
namespace API.Extensions;
#nullable enable
public static class DateTimeExtensions
{
    /// 
    /// Truncates a DateTime to a specified resolution.
    /// A convenient source for resolution is TimeSpan.TicksPerXXXX constants.
    /// 
    /// The DateTime object to truncate
    /// e.g. to round to nearest second, TimeSpan.TicksPerSecond
    /// Truncated DateTime
    public static DateTime Truncate(this DateTime date, long resolution)
    {
        return new DateTime(date.Ticks - (date.Ticks % resolution), date.Kind);
    }
    public static DateTime StartOfWeek(this DateTime dt, DayOfWeek startOfWeek)
    {
        int diff = (7 + (dt.DayOfWeek - startOfWeek)) % 7;
        return dt.AddDays(-1 * diff).Date;
    }
}