none
Incohérence nombre de semaines dans une année. (GetWeekOfYear)

    Question

  • Le nombre de semaines dans l’année est variable, il peut être de 52 ou 53 semaines.

    Pour connaître, le nombre de semaine dans une année, j’utilise la méthode Calendar.GetWeekOfYear()

     

    Voici mon code essentiellement inspiré par un article MSDN :

     

    // Gets the Calendar instance associated with a CultureInfo.

    CultureInfo myCI = new CultureInfo("fr-FR");

    Calendar myCal = myCI.Calendar;

     

    // Gets the DTFI properties required by GetWeekOfYear.

    CalendarWeekRule myCWR = CalendarWeekRule.FirstFullWeek;

    DayOfWeek myFirstDOW = myCI.DateTimeFormat.FirstDayOfWeek;

     

    DateTime LastDay = new System.DateTime(year, 12, 31);

     

    return myCal.GetWeekOfYear(LastDay, myCWR, myFirstDOW);

     

    Voici l’article MSDN :

     

    http://msdn2.microsoft.com/fr-fr/library/system.globalization.calendar.getweekofyear(VS.80).aspx

     

    J’utilise la règle FirstFullWeek qui se dit compatible avec la norme ISO 8601* et pourtant la méthode GetWeekOfYear me renvoie un nombre de semaine incorrect. D’ailleurs l’exemple de l’article MSDN renvoie un total de 53 semaines pour l’année 2001, ce qui est également incorrect.

     

    Est ce que quelqu'un a déjà remarqué ce problème et pour m’indiquer s’il s’agit d’un bug ?

     

    * La norme ISO 8601 décrit notamment la règle qui permet de déterminer le nombre de semaines dans une année.

    Thursday, December 21, 2006 1:42 PM

All replies

  • Bonjour,

    Est-ce que votre problème ne viendrait pas du fait que vous spécifiez que la première semaine de l'année est la première semaine complète et non celle du 1er janvier ? Ce problème se constate aussi au niveau d'Outlook par exemple selon le paramétrage effectué sur la première semaine de l'année.

    Vous devriez retomber sur le nombre de semaines attentues si vous spécifiez CalendarWeekRule.FirstDay et non CalendarWeekRule.FirstFullWeek

    Thursday, December 21, 2006 3:24 PM
  • Aucune des propriétés de CalendarWeekRule ne donne un résultat satisfaisant.
    Peut être est il possible de parametrer d'avantage la première semaine de l'année, mais je ne vois pas comment procéder.

    Merci.
    Thursday, December 21, 2006 3:52 PM
  • Dans ce cas, vous pouvez peut-être aussi jouer sur la valeur du premier jour de la semaine ?
    Thursday, December 21, 2006 3:59 PM
  • Ca ne marche pas davantage. En mettant Monday ou en mettant Thursday, le résultat est faux pour la date envoyée 31/12/2007 (la méthode renvoie semaine n°53 au lieu de semaine n°1).
    Friday, December 22, 2006 9:45 AM