TechBlog

Teknik och filosofi

Svensk veckonumrering i .Net och C#

2 kommentarer

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

Av kalle

april 17th, 2011 at 7:50 e m

Postat i Hemmakodat

2 kommentarer to 'Svensk veckonumrering i .Net och C#'

Prenemurera på kommentarer via RSS eller TrackBack till 'Svensk veckonumrering i .Net och C#'.

  1. Funkar inte för 2012-12-31. Denna kod ger vecka 53, men det ska vara vecka 1.

    Johan

    25 Sep 12 at 08:10

  2. 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.

    kalle

    25 Sep 12 at 08:31

Kommentera