Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calculate week of month in .NET

Tags:

.net

datetime

Do the .NET libraries have an easy way of returning the week number for a given date? For example, input of Year = 2010, Month = 1, Day = 25, should output 5 for the week number.

Closest I found was Calendar.GetWeekOfYear, which is almost there.

Java has a date string format "W" which returns week in month but I can't see anything equivalent in .NET.

like image 543
eddiegroves Avatar asked Jan 25 '10 23:01

eddiegroves


People also ask

How do you calculate week of month?

We can easily count the number of weeks in a month by first counting the number of days in the month. Then, we divide the number of days by 7 since 1 week has 7 days. For example, the month of January has 31 days, so the number of weeks in January would be: 31/7 = 4 weeks + 3 days.

What is current week number?

The current Week Number is WN 34.


1 Answers

There is no built in way to do this but here is an extension method that should do the job for you:

static class DateTimeExtensions {     static GregorianCalendar _gc = new GregorianCalendar();     public static int GetWeekOfMonth(this DateTime time) {         DateTime first = new DateTime(time.Year, time.Month, 1);         return time.GetWeekOfYear() - first.GetWeekOfYear() + 1;     }      static int GetWeekOfYear(this DateTime time) {         return _gc.GetWeekOfYear(time, CalendarWeekRule.FirstDay, DayOfWeek.Sunday);     } } 

Usage:

DateTime time = new DateTime(2010, 1, 25); Console.WriteLine(time.GetWeekOfMonth()); 

Output:

5 

You can alter GetWeekOfYear according to your needs.

like image 64
jason Avatar answered Sep 22 '22 03:09

jason