Bonjour
Je voudrais obtenir la date du premier jour d'une semaine
par exemple la date du lundi de la semaine 23 de l'année 2012
Pouvez-vous m'indiquer comment faire
Merci pour vos réponses
Version imprimable
Bonjour
Je voudrais obtenir la date du premier jour d'une semaine
par exemple la date du lundi de la semaine 23 de l'année 2012
Pouvez-vous m'indiquer comment faire
Merci pour vos réponses
Bonjour, moi je procéderais de la façon suivante : Tu vas chercher la date du premier jour de l'année. Tu additionne ton nombre de semaines. Ensuite tu ajuste selon le jour de la semaine que tu veux. Si c'est le lundi que tu veux avoir, ça devrait ressembler à quelque chose du genre :
J'espère que ça t'aideras!Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 private DateTime GetFirstDayOfWeekNb(int weekNb) { DateTime date = new DateTime(DateTime.Now.Year, 1, 1); date = date.AddDays(7 * weekNb); switch (date.DayOfWeek) { case DayOfWeek.Sunday : date = date.AddDays(1); break; //Fait la même chose avec les autres jours de la semaine default : break; } return date; }
C'est nettement moins facile que ça en a l'air... mais tu as de la chance, c'est implémenté dans la dernière version de la librairie Dvp.NET ;)
Ajoute une référence à Dvp.NET dans ton projet (manuellement ou avec Nuget), et importe le namespace Developpez.DotnetL'approche de duffmere est astucieuse, mais en l'état elle ne fonctionne pas... il faudrait faire quelques ajustements. De plus elle ne gère pas le cas général (prise en compte des différentes règles pour le calcul du numéro de la semaine, du premier jour de la semaine vu que ce n'est pas le lundi dans tous les pays, etc)Code:DateTime monday = DateExtensions.GetStartOfWeek(2012, 23); // 28/05/2012
Cela ressemble au code á Duffmere mais c'est composé maison
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 public static DateTime GetMonday(DateTime dtNow) { if (dtNow.DayOfWeek == DayOfWeek.Saturday || dtNow.DayOfWeek == DayOfWeek.Sunday) { do { dtNow = dtNow.AddDays(-1); } while (dtNow.DayOfWeek != DayOfWeek.Monday); } else { if (dtNow.DayOfWeek != DayOfWeek.Monday) { do { dtNow = dtNow.AddDays(-1); } while (dtNow.DayOfWeek != DayOfWeek.Monday); } } return dtNow; }
Ah si, si je me trompe pas en combinant les deux methodesCitation:
Euh, c'est cool, mais ça répond pas du tout à la question
Code:
1
2
3
4
5
6
7
8 private DateTime GetFirstDayOfWeekNb(int weekNb) { DateTime date = new DateTime(DateTime.Now.Year, 1, 1); date = date.AddDays(7 * weekNb); return GetMonday(date); }
Je voudrais prendre la solution de TomLev mais j'ai Visual Studio 2005 c'est possible quand meme
Car si je veux faire cela :
NuGet s'installe sous forme d'une extension de Visual Studio. Choisissez "Gestionnaire d'extensions" dans le menu Outils, allez dans la catégorie "Galerie en ligne", et tapez "nuget" dans le champ de recherche en haut à droite. Sélectionnez "NuGet Package Manager", et cliquez sur "Télécharger" :
Je n'ai pas dans outils, de gestionnaire d'extensions
Non, il faut au moins VS2008 (.NET 3.5) car la librairie utilise beaucoup Linq
Cela dit tu peux toujours reprendre le code ici :
http://projets.developpez.com/projec...eExtensions.cs
Pour Nuget il faut avoir VS2010
Ma solution devrait fonctionner aussi
Pas dans le cas général ; ça donne les bons résultats pour la règle de la "première semaine complète", en considérant le lundi comme premier jour de la semaine. Or la règle utilisée habituellement est celle de la "première semaine de 4 jours", et la semaine ne commence pas partout le lundi...