获取不同开始日期的周数

Get week number for different startdate

如果我像那样使用正常方式,我可以获得周数。如您所知,这个计算周数是根据正常开始日期 01.01.2015.

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

但我想更改开始日期。例如,我一年中的第一周是 01.07.2015,根据该日期,我想计算给定日期的一年中的一周。

只需减去您希望的第 1 周日期和默认开始日期之间的天数,并在每次计算 (.AddDays(offset)) 时使用该偏移量。

也许您可以计算开始日期的周数(例如 01.07.2015 - 27),然后计算实际日期的周数是多少 - 例如 12.12.2015 (50),然后减去 - 在本例中为 23?

这样 :

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)

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);