L'ultima domenica di un anno in c #
-
07-07-2019 - |
Domanda
Come posso ottenere la data dell'ultima domenica di un anno in C # ?? La classe gregoriancalendar sarà di aiuto?
Soluzione
Non so se esiste un metodo per farlo, ma un modo semplice è controllare gli ultimi 7 giorni di dicembre, a partire dal 31 ° giorno e il conto alla rovescia.
Aggiorna: in realtà se i giorni della settimana sono numerati in questo modo:
0 Sun, 1 Mon, ... 6 Sat
poi
lastSunday = 31 - DayOfWeek(31, 12, 2009) // pseudocode
Altri suggerimenti
Non è la soluzione migliore ma dovrebbe funzionare:
int year = 2009;
DateTime lastSunday = new DateTime(year, 12, 31);
while (lastSunday.DayOfWeek != DayOfWeek.Sunday)
{
lastSunday = lastSunday.AddDays(-1);
}
Penso che puoi usare la rappresentazione intera dell'enumerazione DayOfWeek
per questo:
DateTime endOfYear = new DateTime(DateTime.Now.Year, 12, 31);
DateTime lastSunday = endOfYear.AddDays(-(int)endOfYear.DayOfWeek);
Come l'enumerazione di DayOfWeek inizia da 0 per domenica, dovrebbe funzionare:
int Year = 2009;
DateTime endOfYear = new DateTime(Year, 12, 31);
DateTime sunday = endOfYear.AddDays(-(int)endOfYear.DayOfWeek);
Puoi scoprire che giorno della settimana è il 31 dicembre. Quindi (se non una domenica) calcola indietro ...
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"));
}
Mi dispiace ma non ho una versione C # essere se vedi qui per la versione VB. Sospetto che sarai in grado di convertirlo.
Dipende ... Vuoi l'ultimo giorno dell'anno che è una domenica o la domenica dell'ultima settimana dell'anno? A seconda di come vengono determinate le settimane nel tuo paese, l'ultima settimana dell'anno può arrivare fino a sei giorni all'anno successivo.
Se vuoi il primo, puoi semplicemente iniziare il 31 dicembre e tornare indietro fino a trovare una domenica.
Se vuoi il secondo, dovrai usare il metodo System.Globalizartion.Calendar.GetWeekOfYear
per scoprire dove inizia la prima settimana del prossimo anno e prendere il giorno prima.