using System.Globalization;
public static void Main()
var dFilterDate1 = DateTime.Now.AddHours(-4);
var dFilterDate2 = dFilterDate1.AddDays(-4);
var dFilterDate3 = dFilterDate1.AddDays(-(dFilterDate1.DayOfYear - 1));
var dFilterDate4 = dFilterDate3.AddYears(-1);
var dFilterDate5temp1 = ((int)dFilterDate1.DayOfWeek + 1) - 1;
var dFilterDate5temp2 = (int)dFilterDate4.DayOfWeek + 1;
var dFilterDate5temp3 = dFilterDate4.AddDays(-dFilterDate5temp2);
var dFilterDate5temp4 = GetWeekOfYear(dFilterDate1);
var dFilterDate5temp5 = dFilterDate5temp3.AddDays(7 * (dFilterDate5temp4 - 1));
var dFilterDate5 = dFilterDate5temp5.AddDays(dFilterDate5temp1);
Console.WriteLine(dFilterDate1);
Console.WriteLine(dFilterDate2);
Console.WriteLine(dFilterDate3);
Console.WriteLine(dFilterDate4);
Console.WriteLine(dFilterDate5);
public static int GetWeekOfYear(DateTime dt)
DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
Calendar cal = dfi.Calendar;
return cal.GetWeekOfYear(dt, dfi.CalendarWeekRule, dfi.FirstDayOfWeek);