Kategorier
Hemmakodat

Svensk veckonumrering i .Net och C#

Jag har flera gånger stött på applikationer skrivna i .Net som anger felaktiga veckonummer. I Sverige är det den första veckan som innehåller minst 4 dagar som skall räknas som ”vecka 1” och första dagen i veckan är en måndag.

Följande kod är en funktion i C# som

private static int WeekNumber(DateTime datum)
{
    return System.Globalization.CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(
    datum,
    System.Globalization.CalendarWeekRule.FirstFourDayWeek,
    DayOfWeek.Monday );
}

Olika sätt att beteckna tid och datum avhandlas i ISO Standard 8601. En bra text runt detta finns här:

http://www.kentlundab.se/side8.html

2 svar på ”Svensk veckonumrering i .Net och C#”

Du har rätt, .Net Framework räknar fel!

På Wikipedia läser jag ”Tidigare avslutades året med vecka 53 om vecka 52 slutade före 31 december, men detta veckonummer vandrade inte över till nya året, utan vecka 1 tog vid den 1 januari oavsett veckodag. Samma vecka fick då med andra ord 2 veckonummer.” http://sv.wikipedia.org/wiki/Vecka

Det verkar som om .Net räknar enligt det ”tidigare” sättet.

Svara

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *