Je veux passer en une année et récupérer une date qui représente le premier lundi de la première semaine p>
SO: P>
3 Réponses :
private DateTime GetFirstMondayOfYear(int year)
{
DateTime dt = new DateTime(year, 1, 1);
while (dt.DayOfWeek != DayOfWeek.Monday)
{
dt = dt.AddDays(1);
}
return dt;
}
Cela obtient le premier lundi de l'année, ce qui peut être ce que veut. Notez toutefois que l'ISO a une définition de «première semaine» par laquelle le lundi de la première semaine de l'année N pourrait réellement tomber en année N-1.
Essayez ceci pour une solution sans boucle:
public DateTime FirstMonday(int year)
{
DateTime firstDay = new DateTime(year, 1, 1);
return new DateTime(year, 1, (8 - (int)firstDay.DayOfWeek) % 7 + 1);
}
Int & Dayfweek ne sont pas compatibles. Vous avez besoin d'un casting là-bas. Autre que cela, +1 pour les boucles de fosses.
Vous pouvez utiliser getfirstdayofmons peut obtenir tout premier getfirstmonday (2010) code> pour obtenir le premier lundi pour janvier 2010 code>. Ou vous pouvez spécifier le mois aussi avec getfirstmonday (2010, 2) code> pour obtenir le premier lundi pour février 2010 code>. jour code > Pour un mois donné, Besoin de passer Dayofweek Code> Valeur pour obtenir le résultat de requis jour code>. p>
Quelle définition de 'première semaine' utilisez-vous? Voir Cette liste de définitions