首页 > 解决方案 > 从星期天开始的给定日期获取周数

问题描述

当我一周的第一天是星期日时,如何从给定日期获取一年中正确的周数。

例如:

6 May 2018 - 12 May 2018第 18 周

13 May 2018 - 19 May 2018第 19 周

我正在尝试以下扩展方法,但无法达到预期的结果。它给出了第19周和第20周,我预计分别是第18周和第19周。

public static int GetWeekOfYear(this DateTime date)
{
    return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(
      date, 
      CalendarWeekRule.FirstFourDayWeek, 
      DayOfWeek.Sunday);
}

标签: c#.netasp.net-mvcdateweek-number

解决方案


您需要更改方法的参数

CultureInfo.InvariantCulture.Calendar.GetWeekOfYear()

CalendarWeekRule.FirstFourDayWeek -> CalendarWeekRule.FirstFullWeek

as per Document for FirstFullWeek- 表示一年中的第一周从一年中第一天或之后一周中指定的第一天的第一次出现开始。

像这样

public static int GetWeekOfYear(DateTime date)
{
    return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(date, CalendarWeekRule.FirstFullWeek, DayOfWeek.Sunday);
}

推荐阅读