В любой заданный день, как бы вы нашли дату окончания недели последней завершенной недели, если ваша неделя работает с воскресенья по субботу?
Найти дату окончания недели последней завершенной недели
Ответ 1
DateTime StartOfWeek = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek);
DateTime EndOfLastWeek = StartOfWeek.AddDays(-1);
Ответ 2
DateTime givenDate; // = ...
int daysToOffset = ((int)givenDate.DayOfWeek + 1) * -1;
DateTime lastDayOfLastCompletedWeek = givenDate.AddDays(daysToOffset);
Ответ 3
.NET DateTimes выставляет свойство DayOfWeek. Вы можете использовать это в этом случае:
var currDay = DateTime.Today.DayOfWeek;
//currday is now an enumeration with Sunday=0, Saturday=6
//We can cast that to a number and subtract to get to the previous Saturday
var EndOfLastWeek = DateTime.Today.AddDays(((int)currDay+1)*-1);
Ответ 4
public static DateTime EndOfWeek(DateTime dateTime)
{
DateTime start = StartOfWeek(dateTime);
return start.AddDays(6);
}
public static DateTime StartOfWeek(DateTime dateTime)
{
int days = dateTime.DayOfWeek - DayOfWeek.Monday;
if (days < 0)
days += 7;
return dateTime.AddDays(-1 * days).Date;
}
Чтобы найти конец предыдущей недели, просто позвоните:
DateTime endPrevWeek = StartOfWeek(DateTime.Today).AddDays(-1);
Ответ 5
Если вы хотите указать, какой день - конец недели, и вы не хотите беспокоиться о том, в какой день система определилась как начало недели по умолчанию, используйте этот метод:
private static DateTime GetPreviousSpecifiedDayOfWeek(DateTime dt, DayOfWeek day)
{
if (dt.DayOfWeek == day)
{
return dt;
}
while (dt.DayOfWeek != day)
{
dt = dt.AddDays(-1);
}
return dt;
}