如果我使用这样的正常方式,我可以获得周数。如您所知,根据正常开始日期(2015年1月1日)计算周数。
CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(mydate, CultureInfo.CurrentCulture.DateTimeFormat.CalendarWeekRule, CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek)
但我想改变开始日期。例如,我的第一周将是2015年7月1日,根据该日期,我想计算给定日期的一年中的一周。
答案 0 :(得分:2)
从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);
答案 1 :(得分:0)
也许您可以计算开始日期的周数(例如01.07.2015 - 27 ),然后是实际日期的周数 - 例如12.12.2015( 50 ),然后只是减去 - 在这种情况下 23 ?
答案 2 :(得分:-1)
只需减去您希望的第1周日期和默认开始日期之间的天数,并在每次计算时使用该偏移量(.AddDays(offset))。
答案 3 :(得分:-1)
那样:
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)