Dernier dimanche de l'année en c #
-
07-07-2019 - |
Question
Comment puis-je obtenir la date du dernier dimanche de l'année en C # ?? Les cours de gregoriancalendar seront-ils utiles?
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.