必要时计算周数,包括第53周

我试图找到一种从非标准开始日期算出周数的好方法。第一周应包含四月的第一个星期日。为了计算这一点,我只浏览了4月的前7天,直到找到第一个星期日。几周将从星期日开始。

通常,我会尝试通过以下方式解决此问题:

numberOfDaysDifferenceBetweenEpoch / 7 % 52 + 1;

但是,大约每5年计算一次,因为一年中有53周。显然,如果恰好是53周的一年,上述功能将无法正常工作。一个简单的解决方案是仅使两个函数采用52或53的模数,但是我希望有一种更干净的方法。解决这个问题的最佳方法是什么?


慕桂英3389331
浏览 158回答 1
1回答

暮色呼如

这是一种应该起作用的方法。如果您经常使用GetEpochInYear方法,则可能需要对其进行优化。private static DateTime GetEpochInYear(int year){&nbsp; &nbsp; DateTime currentYearEpoch = new DateTime(year, 4, 1);&nbsp; &nbsp; while (currentYearEpoch.DayOfWeek != DayOfWeek.Sunday)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; currentYearEpoch = currentYearEpoch.AddDays(1);&nbsp; &nbsp; }&nbsp; &nbsp; return currentYearEpoch;}private static int GetWeekNumber(DateTime dateOfInterest){&nbsp; &nbsp; DateTime currentYearEpoch = GetEpochInYear(dateOfInterest.Year);&nbsp; &nbsp; if (dateOfInterest < currentYearEpoch)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; currentYearEpoch = GetEpochInYear(dateOfInterest.Year - 1);&nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; int days = (int)(dateOfInterest - currentYearEpoch).TotalDays;&nbsp; &nbsp; return (days / 7) +1;}
打开App,查看更多内容
随时随地看视频慕课网APP