/ / Wyodrębnianie dat bieżącego tygodnia za pomocą .Net? - c #, .net

Wydobywa daty z bieżącego tygodnia za pomocą .Net? - c #, .net

Próbuję wyodrębnić daty dla bieżącego tygodniadni i po prostu nie mogę znaleźć rozsądnego, inteligentnego sposobu zamiast długiej skrzynki, przełączników i instrukcji if. Czy ktoś zna stosunkowo łatwy sposób na wyodrębnienie tych przy użyciu .Net? Dzięki!

Odpowiedzi:

3 dla odpowiedzi № 1

The DateTime.DayOfWeek to wyliczenie rozpoczynające się od niedzieli równej 0i iść naprzód. Jeśli weźmiesz dzisiejszy dzień tygodnia, dowiesz się również, ile dni temu była niedziela. Dlatego cofnięcie się o tyle dni da ci niedzielę tego tygodnia, zakładając, że tydzień zaczyna się w niedzielę. Możesz przejść od tego przez siedem dni tygodnia.

var today = DateTime.Now;
var thisSunday = today.AddDays(-(int)today.DayOfWeek);

for (int i=0; i<7; i++)
Console.WriteLine(thisSunday.AddDays(i).ToString());

Jeśli tydzień zaczyna się od poniedziałku, użyj

var thisMonday = today.AddDays(-(((int)today.DayOfWeek + 6) % 7));

0 dla odpowiedzi nr 2

Możesz użyć metody rozszerzenia, aby ustawić dzień rozpoczęcia tygodnia od (kredyt trafia do @Compile This)

public static class DateTimeExtensions
{
public static DateTime StartOfWeek(this DateTime datetime, DayOfWeek startOfWeek)
{
int difference = datetime.DayOfWeek - startOfWeek;
if (difference >= 0)
return datetime.AddDays(-1 * difference).Date;
difference += 7;
return datetime.AddDays(-1 * difference).Date;
}
}

Następnie możesz uzyskać datę tygodnia, używając tej samej pętli, o której wspomniał @Sami_Kuhmonen:

        DateTime d = DateTime.Now.StartOfWeek(DayOfWeek.Saturday);
for (int i = 0; i < 7; i++)
Console.WriteLine(d.AddDays(i));