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

当星期从星期日开始时,从给定日期获取周数

当星期从星期日开始时,从给定日期获取周数

C#
胡子哥哥 2021-06-10 18:43:55
当我一周的第一天是星期日时,如何从给定日期获得一年中正确的周数。例如: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);}
查看完整描述

2 回答

?
慕容森

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

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

以前你使用的是什么:

CalendarWeekRule.FirstFourDayWeek

需要替换为:

CalendarWeekRule.FirstFullWeek

因为:

//img1.sycdn.imooc.com//60ceea960001482708930296.jpg

代码片段:


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

  }

}

输出:

//img1.sycdn.imooc.com//60ceeaa20001ffcb00430046.jpg

演示:

dotNetFiddle


查看完整回答
反对 回复 2021-06-20
?
呼如林

TA贡献1798条经验 获得超3个赞

您需要更改方法的参数


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

}


查看完整回答
反对 回复 2021-06-20
  • 2 回答
  • 0 关注
  • 265 浏览

添加回答

举报

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