Domanda

Come posso ottenere la data dell'ultima domenica di un anno in C # ?? La classe gregoriancalendar sarà di aiuto?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top