获取C#中某个DateTime的星期一和星期日

Eli*_*eth 8 c# date

我有一个例如日期" 2010-11-09,星期二 "

现在我想得到星期一和星期日的日期时间,即上述日期.

你会怎么做?

Hen*_*man 38

这可能是你所追求的:

 DateTime date = DateTime.Today;

 // lastMonday is always the Monday before nextSunday.
 // When date is a Sunday, lastMonday will be tomorrow.     
 int offset = date.DayOfWeek - DayOfWeek.Monday;     
 DateTime lastMonday = date.AddDays(-offset);
 DateTime nextSunday = lastMonday.AddDays(6);
Run Code Online (Sandbox Code Playgroud)

编辑:因为lastMonday并不总是顾名思义(参见评论),以下单行可能更重要:

 DateTime nextSunday = date.AddDays(7 - (int) date.DayOfWeek);
Run Code Online (Sandbox Code Playgroud)

  • 这有两个错误,星期一打字错误.AddDays ..星期一应该是小写'm'.从星期一开始星期日你会增加6天而不是7天.增加7天会给你以下星期一. (3认同)
  • 这有另一个错误.如果今天是星期天,它将在下周一返回(偏移= -1)而不是上周一.作为整数转换星期日将返回0,星期一将返回1,因此星期日 - 星期一= -1.添加此行,将修复它:offset =(offset <0)?6:抵消; (3认同)