Hello, in this blog we will create a program in a C# console application that takes three parameters: day, month, and year of the given date and then we get the first date of the week from that date.
![]()
Code
using System;
using System.Globalization;
namespace FirstDateOfWeek
{
class Program
{
static void Main(string[] args)
{
int yr, mn, dt;
Console.Write("\n\n Find the first day of a week against a given date :\n");
Console.Write("--------------------------------------------------------\n");
Console.Write(" Enter the Day : ");
dt = Convert.ToInt32(Console.ReadLine());
Console.Write(" Enter the Month : ");
mn = Convert.ToInt32(Console.ReadLine());
Console.Write(" Enter the Year : ");
yr = Convert.ToInt32(Console.ReadLine());
DateTime d = new DateTime(yr, mn, dt);
Console.WriteLine(" The formatted Date is : {0}", d.ToString("dd/MM/yyyy"));
var culture = CultureInfo.CurrentCulture;
var diff = d.DayOfWeek - culture.DateTimeFormat.FirstDayOfWeek;
if (diff < 0)
diff += 7;
d = d.AddDays(-diff).Date;
Console.WriteLine(" The first day of the week for the above date is : {0}\n", d.ToString("dd/MM/yyyy"));
Console.ReadKey();
}
}
}
Explanation
- In the above code first we take input from user as day, month and year.
- Then we convert those inputs into proper date and show the to the user.
- Then we get current culture from System.GlobalizationCultureInfo. Please check official documentation for current culture info on Microsoft website.
- After this, we get the difference from day of the week of our input date and first day of the week of current culture.
- If difference is less than zero (0) then we add 7 to that difference. Because in the next line we subtract the difference of the days from the given date and if it passes a negative value than it becomes positive, because we also pass minus (-) before diff in AddDays() methods.
- AddDays() method add days in given date, but here we pass negative value, so it subtracts given days.
Output
![]()
In the above image you can see that I entered 15 Dec 2021, and it returns 12 Dec 2021 which is first date of week as you can check in given calendar image.
![]()
In my local pc it is by default Sunday as the first day of week, so it returns a date considering Sunday as the first day of week. If I change the first day of the week from the setting, then it returns date as per that.
![]()
![]()