为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕桂英3389331 2021-03-29 17:14:48
我试图找到一种从非标准开始日期算出周数的好方法。第一周应包含四月的第一个星期日。为了计算这一点,我只浏览了4月的前7天,直到找到第一个星期日。几周将从星期日开始。通常,我会尝试通过以下方式解决此问题:numberOfDaysDifferenceBetweenEpoch / 7 % 52 + 1;但是,大约每5年计算一次,因为一年中有53周。显然,如果恰好是53周的一年,上述功能将无法正常工作。一个简单的解决方案是仅使两个函数采用52或53的模数,但是我希望有一种更干净的方法。解决这个问题的最佳方法是什么?
查看完整描述

1 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

这是一种应该起作用的方法。如果您经常使用GetEpochInYear方法,则可能需要对其进行优化。


private static DateTime GetEpochInYear(int year)

{

    DateTime currentYearEpoch = new DateTime(year, 4, 1);

    while (currentYearEpoch.DayOfWeek != DayOfWeek.Sunday)

    {

        currentYearEpoch = currentYearEpoch.AddDays(1);

    }

    return currentYearEpoch;

}


private static int GetWeekNumber(DateTime dateOfInterest)

{

    DateTime currentYearEpoch = GetEpochInYear(dateOfInterest.Year);

    if (dateOfInterest < currentYearEpoch)

    {

        currentYearEpoch = GetEpochInYear(dateOfInterest.Year - 1);

    }            

    int days = (int)(dateOfInterest - currentYearEpoch).TotalDays;

    return (days / 7) +1;

}


查看完整回答
反对 回复 2021-04-10
  • 1 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信