我正在尝试从给定日期开始一周的开始。例如,如果我传递的DateTime为16/08/2018,则我期望返回13/08/2018。我发现的一切都是为了找到本周的开始。
答案 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
编辑:如果您不愿将星期日转移到下周一, 然后将星期日更改为从当前日期中删除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);