Recuperer le numero de la semaine

Soyez le premier à donner votre avis sur cette source.

Snippet vu 26 019 fois - Téléchargée 7 fois

Contenu du snippet

public static int ISOWeekNumber(DateTime dt) 
{
int yyyy = dt.Year; 
int mm = dt.Month;
int dd = dt.Day; 
// Declare other required variables
int jan1WeekDay; 
int weekNumber = 0;
int weekDay = 0; 
int i, j, k, l, m, n;
int[] mnth = new int[12] { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 }; 
int yearNumber;
// Set DayofYear Number for yyyy mm dd

int dayOfYearNumber = dd + mnth[mm - 1]; 
// Increase of Dayof Year Number by 1, if year is leapyear and month is february
if ((IsLeapYear(yyyy)) && (mm == 2)) dayOfYearNumber += 1; 
// Find the Jan1WeekDay for year 

i = (yyyy - 1) % 100;

j = (yyyy - 1) - i;

k = i + i / 4;

jan1WeekDay = 1 + (((((j / 100) % 4) * 5) + k) % 7);

// Calcuate the WeekDay for the given date

l = dayOfYearNumber + (jan1WeekDay - 1);

weekDay = 1 + ((l - 1) % 7);

// Find if the date falls in YearNumber set WeekNumber to 52 or 53
if ((dayOfYearNumber <= (8 - jan1WeekDay)) && (jan1WeekDay > 4)) 
{

yearNumber = yyyy - 1;
if ((jan1WeekDay == 5) || ((jan1WeekDay == 6) && (jan1WeekDay > 4))) weekNumber = 53;else weekNumber = 52; 
}

else yearNumber = yyyy;
// Set WeekNumber to 1 to 53 if date falls in YearNumber

if (yearNumber == yyyy) 
{
if (IsLeapYear(yyyy) == true) m = 366; 
else m = 365;
if ((m - dayOfYearNumber) < (4 - weekDay)) 
{

yearNumber = yyyy + 1;

weekNumber = 1;

}

}
if (yearNumber == yyyy) 
{

n = dayOfYearNumber + (7 - weekDay) + (jan1WeekDay - 1);

weekNumber = n / 7;
if (jan1WeekDay > 4) weekNumber -= 1; 
}
return (weekNumber); 
}
public static bool IsLeapYear(int yyyy) 
{
return ((yyyy % 4 == 0 && yyyy % 100 != 0) || (yyyy % 400 == 0)); 
} 


Compatibilité : C# 1.x, C# 2.x

Disponible dans d'autres langages :

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.