Frage

Wie kann ich in C# das Datum des letzten Sonntags eines Jahres ermitteln?Wird der gregorianische Kalenderkurs hilfreich sein?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top