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.