c# - 获取当前周数 (C#)
问题描述
我一直在查看 Microsoft 的文档和许多堆栈溢出帖子,但似乎没有一个回答我的问题。我想知道在 c# 中获取当前日期的准确周数的最简单和最简单的方法。我对 c# 很陌生,所以请尽量保持简单。我试过使用:
int week = DateTime.Now.DayOfYear/7;
Console.WriteLine(week)
但是在星期一(当我希望它移到下周时)它会显示为前一周。例如:如果日期是 2020 年 12 月 21 日,则表示当前周是第 50 周,即休息 2 周。然后在 2020 年 12 月 22 日,它会说这是第 51 周,即休息 1 周。
请提前帮助和感谢。
解决方案
这可能是您正在寻找的:
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
表示将计算的第一周将是一年中的第一个完整周。
推荐阅读
- blazor - 输入文本字段上的 Blazor 子级到父级双向绑定
- stata - Stata在交互项之后省略了“共线”变量
- r - 美学中的未知问题打破了闪亮应用程序中的ggplotly情节
- architecture - 用于跨多个数据库从单个有效负载提交多个大型记录的系统架构
- eclipse - Eclipse - 无法完成安装,因为找不到一个或多个必需项目(解压缩安装任务)
- angular - 无响应:无法 dockerize 和运行 Angular 应用程序
- python - 计算列中gps坐标之间的距离
- python - 使用 pdf2image 将 PDF 转换为图像不起作用
- gradle - 如何将子项目生成的类添加到 Gradle 中 WAR 文件的 WEB-INF/classes 目录
- android - 长度过滤器不适用于 textview ?- 安卓