Week numbers totally incorrect !!

S

Steph.

Hi,



When I use the "Calendar.GetWeekOfYear" function (with "fr-BE" as CultureInfo and Monday as the first day of week) I get :



Friday 31/12/2004 : week = 53

Saturday 01/01/2005 : week = 1



(see code sample here below)



That's very interesting but totally incorrect !! Friday and Saturday of the same week should have the same week number ! Except in DOTNET..



ISO 8601 say : Week 01 of a year is per definition the first week that has the Thursday in this year, which is equivalent to the week that contains the fourth day of January. In other words, the first week of a new year is the week that has the majority of its days in the new year.



So the correct numbers are :



Friday 31/12/2004 : week = 53

Saturday 01/01/2005 : week = 53

Manday 03/01/2005 : week = 1



Is there any Patch for this bug ??



Thanks,



Steph.





Code sample :



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

Calendar MyCal = myCI.Calendar;

CalendarWeekRule myCWR = myCI.DateTimeFormat.CalendarWeekRule;

DayOfWeek myFirstDOW = myCI.DateTimeFormat.FirstDayOfWeek;



MessageBox.Show(MyCal.GetWeekOfYear(Convert.ToDateTime("31/12/2004"), myCWR, myFirstDOW).ToString());



MessageBox.Show(MyCal.GetWeekOfYear(Convert.ToDateTime("01/01/2005"), myCWR, myFirstDOW).ToString());
 
M

Morten Wennevik

Hi Steph,

That is certainly very odd. However, I suspect that this is by design as the CalendarWeekRule of fr-BE is FirstDay and setting the CalendarWeekRule to FirstDay for nb-NO will return week 1 for 2005.1.1 where it would be week 53 for by default with FirstFourDayWeek.

I'm not familiar with the FirstDay rule and AFAIK it means the week number does not carry over to the next year.
Just a thought.
 
P

Patrice

I made a quick test (I'm French).

It looks like to me that the rule is incorrect for this culture (as well as
for France).

For now using :

CalendarWeekRule myCWR = System.globalization.FirstForuDayWeek ; //
myCI.DateTimeFormat.CalendarWeekRule; (this is FirstDay)

seems to work. Double check this.

For now it looks like the cultural settings are not correct...

Patrice
--

"Steph." <[email protected]> a écrit dans le message de
Hi,



When I use the "Calendar.GetWeekOfYear" function (with "fr-BE" as
CultureInfo and Monday as the first day of week) I get :



Friday 31/12/2004 : week = 53

Saturday 01/01/2005 : week = 1



(see code sample here below)



That's very interesting but totally incorrect !! Friday and Saturday of the
same week should have the same week number ! Except in DOTNET..



ISO 8601 say : Week 01 of a year is per definition the first week that has
the Thursday in this year, which is equivalent to the week that contains the
fourth day of January. In other words, the first week of a new year is the
week that has the majority of its days in the new year.



So the correct numbers are :



Friday 31/12/2004 : week = 53

Saturday 01/01/2005 : week = 53

Manday 03/01/2005 : week = 1



Is there any Patch for this bug ??



Thanks,



Steph.





Code sample :



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

Calendar MyCal = myCI.Calendar;

CalendarWeekRule myCWR = myCI.DateTimeFormat.CalendarWeekRule;

DayOfWeek myFirstDOW = myCI.DateTimeFormat.FirstDayOfWeek;



MessageBox.Show(MyCal.GetWeekOfYear(Convert.ToDateTime("31/12/2004"), myCWR,
myFirstDOW).ToString());



MessageBox.Show(MyCal.GetWeekOfYear(Convert.ToDateTime("01/01/2005"), myCWR,
myFirstDOW).ToString());
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top