如何获取以周六为起始周五为结束的本周及上周首尾日期?
获取以周六为起始、周五为结束的本周及上周日期
首先明确.NET中DayOfWeek的枚举规则:Sunday = 0、Monday = 1……Saturday = 6。我们需要基于这个规则调整日期偏移量,来得到周六起始、周五结束的周范围。
正确实现代码
// 获取今日日期(仅日期部分) DateTime today = DateTime.Today.Date; // 本周:周六(起始)到周五(结束) // 计算距离本周六的偏移:如果今天是周六,偏移0天;否则偏移 -(当前星期几 + 1) 天 int daysToThisWeekSaturday = (int)today.DayOfWeek == 6 ? 0 : -( (int)today.DayOfWeek + 1 ); DateTime thisWeekStart = today.AddDays(daysToThisWeekSaturday); DateTime thisWeekEnd = thisWeekStart.AddDays(6); // 周六加6天就是周五 // 上周:周六(起始)到周五(结束) DateTime lastWeekStart = thisWeekStart.AddDays(-7); DateTime lastWeekEnd = lastWeekStart.AddDays(6);
逻辑说明
- 本周起始:通过判断当前星期几,计算回退到最近的周六的天数。例如:
- 若今天是周日(
DayOfWeek=0),回退1天到周六; - 若今天是周五(
DayOfWeek=5),回退6天到周六; - 若今天本身是周六,直接取今日作为起始。
- 若今天是周日(
- 本周结束:起始日期加6天,正好是本周的周五。
- 上周范围:直接在本周起始的基础上减7天得到上周六,再加6天得到上周五。
内容的提问来源于stack exchange,提问作者Hussein
相关产品推荐
相关产品推荐

