Question

Comment puis-je obtenir la date du dernier dimanche de l'année en C # ?? Les cours de gregoriancalendar seront-ils utiles?

Était-ce utile?

La solution

Je ne sais pas s'il existe une méthode pour cela, mais un moyen simple consiste à vérifier les 7 derniers jours de décembre, à partir du 31e jour et à partir du compte à rebours.

Mettre à jour: si les jours de la semaine sont numérotés comme suit:

0 Sun, 1 Mon, ... 6 Sat

puis

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

Autres conseils

Ce n’est pas la solution la plus agréable mais devrait fonctionner:

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

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);

En tant qu'énumération de 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); 

Vous pouvez savoir quel jour de la semaine est le 31 décembre. Ensuite (si ce n'est pas dimanche), calculez à nouveau ...

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

Désolé, ma version C # ne s'affiche pas si vous voyez ici. pour la version VB. Je pense que vous pourrez le convertir.

Cela dépend ... Voulez-vous que le dernier jour de l'année soit un dimanche ou le dimanche de la dernière semaine de l'année? Selon la manière 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 commencer le 31 décembre et revenir jusqu'à ce que vous trouviez un dimanche.

Si vous voulez le second, 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top