获取给定日期C#的开始周的日期

时间:2018-08-20 10:02:42

标签: c# datetime

我正在尝试从给定日期开始一周的开始。例如,如果我传递的DateTime为16/08/2018,则我期望返回13/08/2018。我发现的一切都是为了找到本周的开始。

4 个答案:

答案 0 :(得分:1)

使用日期变量获取一周中的星期一和星期日。 可以轻松尝试使用日期变量。

DateTime date = new DateTime(2019, 12, 1);
int day = (int) date.DayOfWeek;
DateTime Monday = date.AddDays((-1) * (day == 0 ? 6 : day - 1));
DateTime Sunday = date.AddDays((1) * (day== 0 ? day : 7 - day)); ```

答案 1 :(得分:0)

超级简单! 您可以使用DayOfWeek获得必须走的距离。 更多信息Is avaliable here

星期日为0,星期一为1。

DateTime date = DateTime.Now; //gets current time
int day = date.DayOfWeek; //gets current day
DateTime Sunday = date.AddDays( (-1) * day ); //go back all the days to get to Sunday
DateTime Monday = date.AddDays( (-1) * (day - 1) ); //go back all the days - 1 to get to Monday

正如评论中指出的那样,如果今天是星期天,这将不起作用... 因此,星期一的解决方法是:

DateTime Monday = date.AddDays( (-1) * (day == 0 ? 7 : day - 1) ); //go back all the days - 1 to get to Monday

答案 2 :(得分:0)

我会做这样的事情:

将日期从字符串解析为DateTime对象(如果需要)

添加当前星期几* -1(将其改为负数)+1 +

abc

Here's a Fiddle


编辑:如果您不愿将星期日转移到下周一, 然后将星期日更改为从当前日期中删除7天;

string s = "2018-08-23 13:26";

DateTime dt = DateTime.ParseExact(s, "yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture);

DateTime startOfWeek = dt.AddDays(((int)(dt.DayOfWeek) * -1) + 1);
Console.WriteLine(startOfWeek);

答案 3 :(得分:0)

这是一个为您提供一周中星期一的版本(假设星期从星期一开始,在星期日结束)

DateTime dt = DateTime.Now;
DateTime startOfWeek = dt.AddDays((((int)(dt.DayOfWeek) + 6) % 7) * -1);    
Console.WriteLine(startOfWeek);