获取不同开始日期的周数
本文关键字:周数 日期 开始 获取 | 更新日期: 2023-09-27 18:00:20
如果我使用这样的正常方式,我可以获得周数。正如你所知,这是根据2015年1月1日的正常开始日期计算周数的。
CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(mydate, CultureInfo.CurrentCulture.DateTimeFormat.CalendarWeekRule, CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek)
但我想更改开始日期。例如,我一年的第一周将是2015年7月1日,根据这个日期,我想计算给定日期的一年中的一周。
从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);
也许你可以计算开始日期的周数(例如2015年7月1日-27),然后计算实际日期的周号,例如2015年12月12日(50,然后减去-在这种情况下23?
只需减去您希望的第1周日期和默认开始日期之间的天数,并在每次计算时使用该偏移量(.AddDays(偏移量))。
那样:
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)