繁体   English   中英

从星期几开始的指定日期获取星期数

[英]Get Week number from a given date when week start on Sunday

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

例如:

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);
}

您需要更改方法的参数

CultureInfo.InvariantCulture.Calendar.GetWeekOfYear()

CalendarWeekRule.FirstFourDayWeek -> CalendarWeekRule.FirstFullWeek

根据FirstFullWeek文档-表示该年的第一周在该年的第一天或之后的指定的第一天的第一次出现开始。

像这样

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

CalendarWeekRule Enumeration :定义用于确定一年中第一周的不同规则。

以前使用的是:

CalendarWeekRule.FirstFourDayWeek

需要替换为:

CalendarWeekRule.FirstFullWeek

因为:

在此处输入图片说明

代码段:

public static void Main()
{
    var week_test = Convert.ToDateTime("05/06/2018");
    var week_test2 = Convert.ToDateTime("05/13/2018");
    List<DateTime> weekList = new List<DateTime>();
    weekList.Add(week_test);
    weekList.Add(week_test2);
    CultureInfo ciCurr = CultureInfo.CurrentCulture;
  foreach(var week in weekList)
  {
    int weekNum = ciCurr.Calendar.GetWeekOfYear(week, CalendarWeekRule.FirstFullWeek, DayOfWeek.Sunday);
    Console.WriteLine(weekNum);
  }
}

输出:

在此处输入图片说明

演示:

dotNetFiddle

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM