Letzter Sonntag eines Jahres in C#
-
07-07-2019 - |
Frage
Wie kann ich in C# das Datum des letzten Sonntags eines Jahres ermitteln?Wird der gregorianische Kalenderkurs hilfreich sein?
Lösung
Ich weiß nicht, ob es eine Methode dafür ist aber eine einfache Art und Weise ist es, die letzten 7 Tagen des Monats Dezember zu überprüfen, ab dem 31. Tag starten und heruntergezählt.
Update: eigentlich, wenn die Tage der Woche sind wie folgt nummeriert:
0 Sun, 1 Mon, ... 6 Sat
dann
lastSunday = 31 - DayOfWeek(31, 12, 2009) // pseudocode
Andere Tipps
Nicht die schönste Lösung, soll aber funktionieren:
int year = 2009;
DateTime lastSunday = new DateTime(year, 12, 31);
while (lastSunday.DayOfWeek != DayOfWeek.Sunday)
{
lastSunday = lastSunday.AddDays(-1);
}
Ich glaube, Sie die Integer-Darstellung der DayOfWeek
Aufzählung für diese verwenden können:
DateTime endOfYear = new DateTime(DateTime.Now.Year, 12, 31);
DateTime lastSunday = endOfYear.AddDays(-(int)endOfYear.DayOfWeek);
Wie die Auszählung von DayOfWeek beginnt bei 0 für Sonntag, sollte diese Arbeit:
int Year = 2009;
DateTime endOfYear = new DateTime(Year, 12, 31);
DateTime sunday = endOfYear.AddDays(-(int)endOfYear.DayOfWeek);
Hier erfahren Sie, welcher Wochentag der 31. Dezember ist.Dann (wenn kein Sonntag) rechnen Sie zurück ...
for (int y=2009; y<=2018; y++)
{
DateTime dt = new DateTime(y, 12, 31); // last day of year
dt = dt.AddDays(-(int)dt.DayOfweek); // sun == 0, so then no change
Console.WriteLine(dt.ToString("dddd dd-MM-yyyy"));
}
Sorry, aber ich habe nicht eine C # Version sein, wenn Sie hier für VB-Version. Ich vermute, Sie werden in der Lage sein, es zu konvertieren.
Das hängt davon ab ... Haben Sie den letzten Tag des Jahres möchten, ein Sonntag oder Sonntag der letzten Woche des Jahres ist? Je nachdem, wie Wochen in Ihrem Land bestimmt sind, kann die letzte Woche des Jahres bis sechs Tage in das im nächsten Jahr steigen.
Wenn Sie die ersten möchten, können Sie einfach am 31. Dezember beginnen und bis Sie gehen zurück auf einen Sonntag finden.
Wenn Sie den zweiter mögen, werden Sie die System.Globalizartion.Calendar.GetWeekOfYear
Methode, um herauszufinden, wo die erste Woche des nächsten Jahres beginnt, und nehmen Sie den Tag vor, dass verwenden.