Get week number for different starts

I can get the week number if I use the normal way. As you know, this calculates the week number according to the usual start date, which is 01/01/2015.

CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(mydate, CultureInfo.CurrentCulture.DateTimeFormat.CalendarWeekRule, CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek)

      

But I want to change this start date. For example, my first week of the year will be 07/01/2015, and from this date I want to calculate the week of the year for a given date.

+3


source to share


4 answers


Highlight the difference between the new year and the start date of the object mydate



var startDate = new DateTime(2015, 7, 1);
var newYear = new DateTime(2015, 1, 1);

var culture = CultureInfo.CurrentCulture;
var weekOfYear = culture.Calendar.GetWeekOfYear(
    mydate.Add(newYear - startDate),
    culture.DateTimeFormat.CalendarWeekRule,
    culture.DateTimeFormat.FirstDayOfWeek);

      

+2


source


Maybe you could calculate the week number for your start date (for example 07/01/2015 - 27 ) and then what the week number for the actual date is - for example 12/12/2015 ( 50 ) and then just subtract - in this case 23 ?



0


source


Just subtract the number of days between your desired week-1 date and the default start date and use that offset each time you calculate (.AddDays (offset)).

-1


source


Thus:

DateTime startDateTime = new DateTime(2015,07,01) ;
int fisrtDayOfWeek = 0 ; // 0:sunday for US, 1:Monday for many other coutries
DateTime week1StartDateTime = startDateTime ; 
for (int i=1;i<6;i++) if ((int)startDateTime.AddDays(i).Day==fisrtDayOfWeek )
  week1StartDateTime = startDateTime.AddDays(i) ;

int weekNumber= mydate<week1StartDateTime ? 1 :
    ((int)(mydate-week1StartDateTime).TotalDays)/7+1 ;
// note : casting double to int provides the floor (not round)

      

-1


source







All Articles