none
DateTimeFormat.CalendarWeekRule pas correcte pour certaines cultures comme Fr-fr RRS feed

  • Discussion générale

  • Mon PC est configuré avec la culture FR.

    Dans mon code C#, je veux récupérer la règle pour la numérotation des semaines :

    DateTimeFormatInfo dtFormat = DateTimeFormatInfo.CurrentInfo;
    CalendarWeekRule weekRule = dtFormat.CalendarWeekRule;
    

    Et la variable weekRule contient la valeur FirstDay. Or en France, on utilise plutôt FirstFourDayWeekd'où un mauvais calcul des numéros de semaines.

    J'obtiens le même problème si je créé moi même la culture Fr-fr :

    CultureInfo culture = new CultureInfo("FR-fr");
    CalendarWeekRule weekRule = culture.DateTimeFormat.CalendarWeekRule;
    

     

    Il semblerait donc bien qu'il y ait un problème au niveau de la culture FR-fr dans le framework .Net. Comment faire ?

    mardi 19 juillet 2011 13:14

Toutes les réponses

  • Bonjour,

    je ne sais pas quelle est la valeur prévue en FR-fr mais vous pouvez si besoin forcer la valeur :

    CultureInfo culture = new CultureInfo("FR-fr");
    culture.DateTimeFormat.CalendarWeekRule = CalendarWeekRule.FirstFourDayWeek;
    

    Cordialement

    mardi 19 juillet 2011 14:39
    Modérateur
  • Je ne veux absolument pas forcer la valeur dans mon code. Le logiciel doit fonctionner pour toutes les locales, et il n'est pas envisageable de toutes les repasser en revue.

    Je voudrais que l'utilisateur français puisse avoir des numéros de semaine qui correspondent à ce qu'il voit sur un calendrier. De même pour les autres.

    Je ne comprends pas que la culture FR-fr ait la valeur FirstDay pour la propriété CalendarWeekRule. Si quelqu'un a une explication sur ça.

    Sinon je ne crée pas la culture moi-même, j'utilise en fait le paramétrage Windows fait par l'utilisateur grace à

     DateTimeFormatInfo.CurrentInfo

    Mon problème est que sur un PC (du moins Windows 7) la valeur de DateTimeFormatInfo.CurrentInfo.CalendarWeekRule vaut FirstDay. Une façon de faire acceptable serait que l'utilisateur puisse modifier cette valeur dans les options régionales de Windows et que la nouvelle valeur soit ainsi récupérée par DateTimeFormatInfo.CurrentInfo.CalendarWeekRul. Mais je n'ai pas trouvé pour modifier ceci sous Windows 7.


    mardi 19 juillet 2011 16:56
  • Bonjour,

    je ne sais pas si il s'agit d'un "bug" je n'ai pas trouver de document précisant le mode de calcul à utiliser pour la france. ( voir également ce post qui se posait la même question : CultureInfo en FR-fr et DateTimeFormat.CalendarWeekRule et GetWeekOfYear... bug ? )

    Dans votre cas vous pourriez forcer CalendarWeekRule uniquement pour FR-fr si l'on part du principe qu'il s'agit d'une erreur et laisser le comportement par défaut pour les autres cultures.

    Cordialement

    mercredi 20 juillet 2011 09:13
    Modérateur