using System.Globalization;
public static void Main()
DateTime jan1 = new DateTime(year, 1, 1);
int daysOffset = (int)CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek - (int)jan1.DayOfWeek;
Console.WriteLine("daysOffset = " + daysOffset) ;
DateTime firstMonday = jan1.AddDays(daysOffset);
Console.WriteLine("firstMonday = " + firstMonday) ;
int firstWeek = CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(jan1, CultureInfo.CurrentCulture.DateTimeFormat.CalendarWeekRule, CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek);
Console.WriteLine("firstWeek = " + firstWeek) ;
var tempDate = firstMonday.AddDays(weekOfYear * 7);
Console.WriteLine("tempDate = " + tempDate) ;
if (tempDate < DateTime.Parse(("01/01/" + year.ToString())))
tempDate = DateTime.Parse(("01/01/" + year.ToString()));
Console.WriteLine("calculated date = " + tempDate.ToString("dd/MM/yyyy")) ;
if (tempDate > DateTime.Now)
tempDate = tempDate.AddYears(-10);
Console.WriteLine("finial date = " + tempDate.ToString("dd/MM/yyyy")) ;