Premier jour d'une semaine

Soyez le premier à donner votre avis sur cette source.

Snippet vu 25 356 fois - Téléchargée 29 fois

Contenu du snippet

Cette fonction permet de récupérer le premier jour d'une semaine en fonction de son numéro et de l'année en question.

Source / Exemple :


private DateTime getPremierJourSemaine(int numeroSemaine,int annee)
{
	DateTime temp = new DateTime(annee,1,1);
	int compteurSemaine = 1;

	//D'abord, on va se caler sur le premier jeudi de l'année
	//Le premier jeudi dans l'année représente la première semaine
	//http://www.cl.cam.ac.uk/%7Emgk25/iso-time.html
	while(temp.DayOfWeek != DayOfWeek.Thursday)
	{
		temp = temp.AddDays(1);
	}

	//Maintenant, on revient sur le lundi précédent
	while(temp.DayOfWeek != DayOfWeek.Monday)
		temp = temp.AddDays(-1);

	//On va avancer de 7 jours en 7 jours pour trouver notre semaine
	while(compteurSemaine < numeroSemaine)
	{
		temp = temp.AddDays(7);
		compteurSemaine++;
	}

	return temp;
}

Conclusion :


Voila, rien de bien méchant mais ca peut toujours servir :)

A voir également

Ajouter un commentaire

Commentaires

sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32 -
la démarche est bonne... mais je pense qu'il a plus simple
JulSoft
Messages postés
354
Date d'inscription
dimanche 3 juin 2001
Statut
Membre
Dernière intervention
11 mars 2013
-
je pense aussi qu'il y a plus simple
on doit pouvoir le faire en conaissant le jour du 1er janvier de l'année en question et, sauf erreur de ma part, il existe une fonction pour ça (je confond peut être avec le PHP où la fonction existe bel et bien)
daivil
Messages postés
87
Date d'inscription
mardi 25 juin 2002
Statut
Membre
Dernière intervention
4 juin 2005
-
J'ai bien essayé de faire plus simple mais la classe DateTime ne semble pas gérer les semaines :)
flashkel
Messages postés
5
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
23 novembre 2007
-
Avec une seule boucle pour info avec la classe Calendar.

private DateTime getPremierJourSemaine(int numeroSemaine,int annee)
{
Calendar cal = CultureInfo.InvariantCulture.Calendar;
DateTime date=new DateTime(annee,1,1);
while(numeroSemaine!=cal.GetWeekOfYear(date,CalendarWeekRule.FirstFourDayWeek,DayOfWeek.Monday))
date=date.AddDays(1);
return date;
}
flashkel
Messages postés
5
Date d'inscription
vendredi 4 juin 2004
Statut
Membre
Dernière intervention
23 novembre 2007
-
doh!
mettre

date=date.AddDay(7);

plutot que

date=date.AddDay(1);

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.