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? P>
En d'autres termes, quelle est la meilleure façon de trouver le lundi du mois un lundi actuel? p>
4 Réponses :
Trouvez le lundi qui se situe entre le 15ème et le 21, inclus. P>
public bool IsThirdMondayOfMonth(DateTime dt) { if(dt.DayOfWeek == DayOfWeek.Monday && dt.Day > 14 && dt.Day <= 21) { return true; } return false; }
Meilleur: retour (dt.dayofweek == dayofweek.monday && dt.day> 14 && dt.day <22); code>
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 :)
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(); } }
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. p> 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: p>
+1 Votre édition valait vraiment la peine car je pense que c'est ce que l'OP recherche
Je pense que vos "autres mots" disent autre chose. :)