DateTime - StartOfWeek

A DateTime extension method that starts of week.

Try it

public static void Main()
{
    DateTime todayDate = DateTime.Now;
	
	Console.WriteLine("Current Date             : {0}", todayDate.ToFullDateTimeString());
	
	// C# Extension Method: DateTime - StartOfWeek
	DateTime newDate = todayDate.StartOfWeek();
	
	Console.WriteLine("After calling StartOfWeek: {0}", newDate.ToFullDateTimeString());
}

View Source
using System;

public static partial class Extensions
{
    /// <summary>
    ///     A DateTime extension method that starts of week.
    /// </summary>
    /// <param name="dt">The dt to act on.</param>
    /// <param name="startDayOfWeek">(Optional) the start day of week.</param>
    /// <returns>A DateTime.</returns>
    public static DateTime StartOfWeek(this DateTime dt, DayOfWeek startDayOfWeek = DayOfWeek.Sunday)
    {
        var start = new DateTime(dt.Year, dt.Month, dt.Day);

        if (start.DayOfWeek != startDayOfWeek)
        {
            int d = startDayOfWeek - start.DayOfWeek;
            if (startDayOfWeek <= start.DayOfWeek)
            {
                return start.AddDays(d);
            }
            return start.AddDays(-7 + d);
        }

        return start;
    }
}