6
votes

C #: Découvrez lequel lundi est le 3ème lundi du mois?

Si j'écris du code C # qui traverse une année de dates (itération de jour) et que quelque chose de spécial se produise tous les 3ème lundi du mois, comment puis-je accomplir cela?

En d'autres termes, quelle est la meilleure façon de trouver le lundi du mois un lundi actuel?


1 commentaires

Je pense que vos "autres mots" disent autre chose. :)


4 Réponses :


1
votes

Trouvez le lundi qui se situe entre le 15ème et le 21, inclus.


0 commentaires

11
votes
public bool IsThirdMondayOfMonth(DateTime dt)
{
  if(dt.DayOfWeek == DayOfWeek.Monday && dt.Day > 14 && dt.Day <= 21)
  {
    return true;
  }
  return false;
}

3 commentaires

Meilleur: retour (dt.dayofweek == dayofweek.monday && dt.day> 14 && dt.day <22);


Vous voudrez peut-être que cela soit une extension pour DateTime. Vous rencontrerez probablement un certain nombre de choses comme celle-ci qui valent la peine d'être tenue dans une bibliothèque d'extension.


Très bien, j'espérais avoir quelque chose de construit, mais je ne pensais pas que c'était trop probable. Je suppose que je devrai prendre quelques-uns de ces extraits de code ici. Merci les gars :)



0
votes

Je ne sais pas s'il y a une barrière de manipulation de date pour faire ce que vous voulez, mais vous pouvez écrire vos propres fonctions assez facilement:

using System;

class Program {
    static void Main(string[] args) {
        int year = 2010;
        int month = 05;
        DateTime thirdMonday = ThirdMonday(year, month);
    }

    private static DateTime ThirdMonday(int year, int month) {
        for (int day = 1; day <= DateTime.DaysInMonth(year, month); ++day) {
            DateTime dt = new DateTime(year, month, day);
            if (dt.DayOfWeek == DayOfWeek.Monday) {
                return dt.AddDays(14);
            }
        }
        // this should never happen
        throw new Exception();
    }
}


0 commentaires

9
votes

Je ne pense pas que votre "en d'autres termes" repose vraiment le problème que vous décrivez en premier, alors je vais répondre à la fois.

Voici une méthode assez simple qui déterminera la nième occurrence d'un jour particulier de la semaine dans un mois donné d'une année donnée. xxx

déterminer le lundi (ou tout autre jour) du mois, une date est beaucoup plus facile; Il suffit de prendre le plafond du jour du mois / 7: xxx


1 commentaires

+1 Votre édition valait vraiment la peine car je pense que c'est ce que l'OP recherche