2009

Aug

03

Av Rolf

Ibland är det praktiskt att ange veckonummer istället för datum, och tvärtom kunna veta vilka datum ett visst veckonummer infaller. FileMaker har numera en inbyggd funktion för att beräkna veckonummer från ett datum enligt ISO-standard.

Enligt ISO-standard är vecka 1 på ett år den första vecka som innehåller minst 4 dagar på det nya året. Det gör att det ibland förekommer att första dagarna på ett år är i vecka 52 eller 53, eller att de sista dagarna på året är vecka 1.

Funktionen heter WeekOfYearFiscal och har 2 argument, datumet förstås men också vilken veckodag som en vecka börjar med (det är som bekant lite olika i olika länder). I Sverige börjar veckan med måndag och då anges alltid värdet 2 som det andra argumentet.

T.ex. ger WeekOfYearFiscal(”2008-12-29”;2) resultatet 1, medan WeekOfYearFiscal(”2008-12-28”;2) ger resultatet 52.

Andra hållet, dvs. från ett givet veckonummer få t.ex. första datumet i veckan, kräver lite mer tankearbete. Följande formel kan användas (med Datum som beräkningsresultat) om årtalet finns i fältet År och veckonumret i fältet Vecka:

Måndag =
Let([
Jan1 = Date(1; 1; År)
];
Jan1 - DayOfWeek (Jan1) + 2 + If(WeekOfYearFiscal(Jan1; 2) = 1; 0; 7) 
+ (Vecka - 1)*7
)

Formeln beräknar först datumet för 1 jan för aktuellt årtal till en variabel (Jan1). För att få fram måndagen i veckan med 1 jan drar jag bort veckodagen, korrigerar för att veckan startar på en måndag (2), korrigerar om veckonumret för 1 jan är 52 eller 53 och lägger till sist till antal veckor.

Om fältet År innehåller 2009 och Vecka innehåller 32 blir resultatet ”2009-08-03”.

Kommentarer

2009-09-30 Mihai

Tack så mycket, Rolf. I FileMaker:s bok om funktioner nämns WeekOfYearFiscal inte, men jag hade tur att hitta ditt inlägg.

2009-09-30 Mihai

Nu ser jag att funktionen också visas i boken. Men tack för dina detajlerade förklaringar i alla fall.

Skriv en kommentar

Din epost-adress stannar hos oss.