c# - 从星期天开始的给定日期获取周数
问题描述
当我一周的第一天是星期日时,如何从给定日期获取一年中正确的周数。
例如:
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
as per Document for
FirstFullWeek
- 表示一年中的第一周从一年中第一天或之后一周中指定的第一天的第一次出现开始。
像这样
public static int GetWeekOfYear(DateTime date)
{
return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(date, CalendarWeekRule.FirstFullWeek, DayOfWeek.Sunday);
}
推荐阅读
- python - 为什么Python打印我的文件目录已经改变,但是当我通过文件管理器检查时,它没有改变?
- swift - 快速检测 AVCaptureSession 中的相机状况
- python - 雪花和 SQLAlchemy “意外的 'UNIQUE'
- swift - 我在哪里调用我的函数才能成功更新我的 UI?
- vba - 如果重复显示错误消息 Microsoft 访问,则验证文本框条目
- mysql - 具有多个变量的 Bash 脚本
- php - 使用 ACL 解析服务器删除对象
- python-3.x - _score() 缺少 1 个必需参数“y_true”
- django - None 类型对象没有属性 delete()
- javascript - 如何使用 Material UI 表格分页在每页显示正确的行