2009-09-14 5 views
2

Comment puis-je obtenir la date du dernier dimanche de l'année en C# ?? La classe gregoriancalendar sera-t-elle utile?Dernier dimanche d'un an en C#

+2

Il suffit d'utiliser la fonction bien connue 'GregorianCalendar.GetDateOfLastSundayInYear()'. Jeez, vraiment. – Bombe

Répondre

8

Je ne sais pas s'il existe une méthode pour cela mais une manière simple est de vérifier les 7 derniers jours de décembre, à partir du 31ème jour et de décompter.

Mise à jour: En fait, si les jours de la semaine sont comptés comme ceci:

0 Sun, 1 Mon, ... 6 Sat 

puis

lastSunday = 31 - DayOfWeek(31, 12, 2009) // pseudocode 
1

Vous pouvez savoir quel jour de la semaine est le 31 décembre. Puis (sinon un dimanche) le calcul de retour ...

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")); 
} 
0

Désolé, mais je n'ai pas une version C# être si vous voyez here pour la version VB. Je pense que vous serez capable de le convertir.

7

Pas la plus belle solution, mais devrait fonctionner:

int year = 2009; 
DateTime lastSunday = new DateTime(year, 12, 31); 
while (lastSunday.DayOfWeek != DayOfWeek.Sunday) 
{ 
    lastSunday = lastSunday.AddDays(-1); 
} 
+0

nice work mec .............. –

+0

Cela fonctionne bien, mais le code de Fredrik (et le pseudocode de Nick) sont plus concis et efficace. – LukeH

0

Ce dépend ... Voulez-vous le dernier jour de l'année qui est un soleil jour, ou le dimanche de la dernière semaine de l'année? Selon la façon dont les semaines sont déterminées dans votre pays, la dernière semaine de l'année peut aller jusqu'à six jours dans l'année suivante.

Si vous voulez le premier, vous pouvez juste commencer au 31 décembre et revenir jusqu'à ce que vous trouviez un dimanche.

Si vous voulez la seconde, vous devrez utiliser la méthode System.Globalizartion.Calendar.GetWeekOfYear pour savoir où commence la première semaine de l'année suivante et prendre la veille.

+0

J'ai besoin de quelle date tombe au dernier dimanche d'une année. –

+0

Oui, mais que considérez-vous être le dernier dimanche de l'année? Le dernier jour de l'année qui est un dimanche, ou le dimanche de la dernière semaine de l'année? Aussi, le dimanche est le premier ou le dernier jour de la semaine où vous vivez? – Guffa

5

Je pense que vous pouvez utiliser la représentation entière de l'énumération DayOfWeek pour cela:

DateTime endOfYear = new DateTime(DateTime.Now.Year, 12, 31); 
DateTime lastSunday = endOfYear.AddDays(-(int)endOfYear.DayOfWeek); 
3

Comme l'énumération des DayOfWeek commence à 0 pour dimanche, cela devrait fonctionner:

int Year = 2009; 
    DateTime endOfYear = new DateTime(Year, 12, 31); 
    DateTime sunday = endOfYear.AddDays(-(int)endOfYear.DayOfWeek); 
Questions connexes