bonjour a tous,
je developpe actuellement une petite appli c# et j'ai besoin de recuperer le numéro de semaine en fonction d'un datetime.
pour cela, jutilise le calendrier grégorien de la classe datetime comme ceci :
ce code fonctionne , mais apres quelques essais , je me suis rendu compte d'une erreur : le lundi 31 décembre 2012 est assimilé a la semaine 53 alors qu'il devrait (je pense) etre assimilé a la semaine 1 de l'année 2013.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public static int GetWeekNumber(DateTime d) { System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("fr-FR", true); return System.Globalization.CultureInfo.CurrentUICulture.Calendar.GetWeekOfYear(d, System.Globalization.CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); }
en effet, la semaine 53 n'est effective que si il reste au minimum 4 jours de l'année en cours (28 - 29 - 30 et 31 décembre), le 1er, 2 et 3 janvier etant assimilé a la semaine 53 de l'année précédente. hors ici, il ne reste qu'un jour, le lundi 31 décembre ! de plus la norme ISO8601 spécifie que
la semaine 1 est celle qui contient le premier jeudi de l'année.
la méthode que j'utilise est-elle fiable ? peut-etre est-ce moi qui me plante ? ne se base t-elle pas sur l'ISO8601 ?
merci d'avance pour votre aide
EDIT : je viens de verifier sur mon calendrier Outlook, lui aussi fait la meme erreur.
Partager