Bonjour à tous,
j'aimerai savoir s'il existe une méthode pour avoir les jours de la semaine correspondant à un numéro de semaine ?
exemple : Semaine 39 de 2007
Lundi : 24/09/2007
Mardi : 25/09/2007
...
Dimanche : 30/09/2007
Merci.
Version imprimable
Bonjour à tous,
j'aimerai savoir s'il existe une méthode pour avoir les jours de la semaine correspondant à un numéro de semaine ?
exemple : Semaine 39 de 2007
Lundi : 24/09/2007
Mardi : 25/09/2007
...
Dimanche : 30/09/2007
Merci.
Code:
1
2
3
4
5
6
7
8
9 private int GetWeekNumber(DateTime date) { Calendar calendar = Thread.CurrentThread.CurrentCulture.Calendar; CalendarWeekRule weekRule = Thread.CurrentThread.CurrentCulture.DateTimeFormat.CalendarWeekRule; DayOfWeek firstDayOfWeek = Thread.CurrentThread.CurrentCulture.DateTimeFormat.FirstDayOfWeek; return calendar.GetWeekOfYear(date, weekRule, firstDayOfWeek); }
Pas mal cette technique ;)
C'est pour récupérer le numéro de la semaine d'une date non?
Il me semble qu'il veut les jours d'un n° de semaine donné
de fait, c'est récuperer les jours de la semaine pour un numéro donné qui m'interresse.
Pour avoir le numéro de la semaine, j'utilisais la même technique que tu as marqué.
beh il me semble que
Calendar.GetDayOfYear() devrait faire l'affaire alors ? :)
The Monz, Toulouse
Prends la date du premier janvier et fais un AddWeeks du nombre de semaines qui t'intéresse.
Désolé pour la mauvaise info, j'ai mal lu le premier thread.
Salut,
je tente une petite fonction (pas testée), mais il doit exister sûrement plus simple... Ca devrait renvoyer un dico avec les jours de la semaine en clé et les structs datetime en valeur. ca devrait marcher pour un calendrier normé ISO (la semaine n°1 est la première à contenir au moins quatre jours).
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 private Dictionary<DayOfWeek,DateTime> GetWeekDetails(int week, int year) { if (week > 52 || week < 1) return null; Dictionary<DayOfWeek, DateTime> resultat = new Dictionary<DayOfWeek, DateTime>(); System.Globalization.Calendar cal = System.Threading.Thread.CurrentThread.CurrentCulture.Calendar; //1er jour de l'année désirée pour le système de calendrier de la culture du thread actuel DateTime dt = new DateTime(year, 1, 1, cal); //se positionner sur le premier jour de la semaine numéro 1. while (cal.GetWeekOfYear(dt, System.Globalization.CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday) != 1) { dt = dt.AddDays(1); } //se postionner sur le premier jour de la semaine désirée dt = cal.AddWeeks(dt, week - 1); //remplir le dico for (int i = 0; i < 7; i++) { resultat.Add(dt.DayOfWeek, dt); dt = dt.AddDays(1); } return resultat; }