首页 > 解决方案 > 获取当前周数 (C#)

问题描述

我一直在查看 Microsoft 的文档和许多堆栈溢出帖子,但似乎没有一个回答我的问题。我想知道在 c# 中获取当前日期的准确周数的最简单和最简单的方法。我对 c# 很陌生,所以请尽量保持简单。我试过使用:

int week = DateTime.Now.DayOfYear/7;
Console.WriteLine(week)

但是在星期一(当我希望它移到下周时)它会显示为前一周。例如:如果日期是 2020 年 12 月 21 日,则表示当前周是第 50 周,即休息 2 周。然后在 2020 年 12 月 22 日,它会说这是第 51 周,即休息 1 周。

请提前帮助和感谢。

标签: c#

解决方案


这可能是您正在寻找的:

DateTime dt = new DateTime(2020, 12, 21);
Calendar cal = new CultureInfo("en-US").Calendar;
int week = cal.GetWeekOfYear(dt, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
Console.WriteLine(week);

您可以更改CalendarWeekRule参数以更改一年中第一周的定义:

FirstDay意味着一年的第一周可以有任意长度。例如,如果一年中的第一天是星期日,它将被计为一周,而下一个星期一将被计为第二周的一部分。

FirstFourDayWeek意味着第一周只有在主要在今年才计算在内。例如,如果一年的第一天是星期四,则将计算该周,但如果该年从星期五开始,则不计算第一周。

FirstFullWeek表示将计算的第一周将是一年中的第一个完整周。


推荐阅读