Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1253 connectés 

  FORUM HardWare.fr
  Programmation
  ASP

  trouver intervale de dates d'un n° de semaine pour une année x

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

trouver intervale de dates d'un n° de semaine pour une année x

n°1283093
jokari34
Posté le 13-01-2006 à 16:15:29  profilanswer
 

bonjour
 
comment a part d'un n° de semaine et du nombre de l'année
je peux trouver de quelle date a quelle date se deroule la semaine
 
ex:
semaine : 3
année : 2005
resultat: semaine du 03/03/2005 au 10/03/2005
 
merci

mood
Publicité
Posté le 13-01-2006 à 16:15:29  profilanswer
 

n°1671332
Nuwanda
Carpe Diem
Posté le 15-01-2008 à 10:31:19  profilanswer
 

ca m'interresse aussi, merci pour ceux qui ont la reponse.
;)

n°1671387
MagicBuzz
Posté le 15-01-2008 à 11:43:21  profilanswer
 

Petit exemple en C#.
 
(Le calendrier est afficher à des fins de contrôle uniquement)
http://img149.imageshack.us/img149/9379/calweekcz8.png
 

Code :
  1. private void Date_ValueChanged(object sender, EventArgs e)
  2.        {
  3.            // Récupération de la culture actuelle
  4.            System.Globalization.CultureInfo ci = System.Threading.Thread.CurrentThread.CurrentUICulture;
  5.  
  6.            // Déjà, on crée une date avec un jour approximativement proche
  7.            // de la date choisie :
  8.            // Règle bidon donc : année = celle choisie, et jour de l'année environ (semaine choisie -1) * 7
  9.            DateTime date = new DateTime(
  10.              (int)numericUpDown2.Value,
  11.              (int)Math.Max(1, (numericUpDown1.Value - 1 * 7) / 30),
  12.              (int)Math.Max(1, (numericUpDown1.Value - 1 * 7) % 30)
  13.            );
  14.  
  15.            // Maintenant, la partie crade... On ajoute un jour jusqu'à ce qu'on ait la bonne semaine
  16.            while (ci.Calendar.GetWeekOfYear(date, ci.DateTimeFormat.CalendarWeekRule, ci.DateTimeFormat.FirstDayOfWeek) < numericUpDown1.Value)
  17.            {
  18.                date = date.AddDays(1);
  19.            }
  20.            monthCalendar1.SetDate(date);
  21.            label1.Text = date.ToLongDateString();
  22.            label2.Text = date.AddDays(6).ToLongDateString();
  23.        }


 
Ce code est lancé lorsque je change la valeur d'une des deux listes numériques. La première correspond au numéro de semaine, et la seconde à l'année.
 
Attention, les règles des semaines sont spécifiques à la culture du poste client, attention donc à passer les paramètres correctement (ici, je reprend la locale utilisé par le programme, ce qui n'est pas aussi simple à faire en VB6).
 
L'algo n'est pas parfait, car pour la première semaine de l'année, au lieu de commencer au lundi, il commence au 1° janvier. Il faut donc ajouter une verrue pour gérer ce cas spécifique.


Message édité par MagicBuzz le 15-01-2008 à 12:03:33
n°1671537
Nuwanda
Carpe Diem
Posté le 15-01-2008 à 15:22:34  profilanswer
 

merci mais j'ai trouvé. C'est un petit code tout simple qui fonctionne parfaitement (en ASP donc).
il donne la date du premier lundi associé au numero de semaine: (A partir de la on peut facilement faire une periode):
Function DateLundi(Sem, Annee)
  'Retrouve la date suivant une semaine demandée
  'Trouve la position du lundi de la premiere semaine de l'année
  'ensuite on le soustrait avec le nb de semaine converti en jour
  X = (Sem * 7) - (Weekday("01/01/" & Annee, vbMonday) + 6)

 

 'Decale le premier jour de l'annee avec la valeur qu'on a trouvé
  DateLundi = DateAdd("d", X, "01/01/" & Annee)
End Function


Message édité par Nuwanda le 15-01-2008 à 15:24:24
n°1671563
MagicBuzz
Posté le 15-01-2008 à 15:58:35  profilanswer
 

fait gaffe au différentes façon de récupérer la semaine de l'année.
 
en effet, en europe, c'est la première semaine d'au moins 4 jours qui est la semaine 1.
 
ainsi, le 01/01 peut être dans la semaine 52.
 
teste ce cas, ton code marche peut-être, mais c'est un cas à prendre en compte dans tes tests ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASP

  trouver intervale de dates d'un n° de semaine pour une année x

 

Sujets relatifs
Multiples champs liés aux datestrouver un herbergeur avec un ftp gratuit
[MySQL] Trouver le nom de la clé primaire d'une table.comparaison de dates en msdos
Algorithme pour trouver le chemin le plus coursComment générer des dates compatibles SOAP
Trouver IP dynamique en c++ ou en vb[KiX]Trouver à quel groupe appartient un utilisateur
Ou trouver des exemples de pages HTA ?Trouver une team dévlopement
Plus de sujets relatifs à : trouver intervale de dates d'un n° de semaine pour une année x


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR