Re: IsoWeek Function

*To*: mathgroup at smc.vnet.net*Subject*: [mg127332] Re: IsoWeek Function*From*: Murta <rodrigomurtax at gmail.com>*Date*: Tue, 17 Jul 2012 01:32:45 -0400 (EDT)*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com*Delivered-to*: mathgroup-newout@smc.vnet.net*Delivered-to*: mathgroup-newsend@smc.vnet.net*References*: <20120716034417.DD63E6857@smc.vnet.net> <ju0l8s$l00$1@smc.vnet.net>

Tks for your attention I have made some progress, but not enough: below there is one fast way to get weekDay weekDayC = Compile[{{ano, _Integer}, {m, _Integer}, {d, _Integer}} , Module[{t, y = ano}, (*2 for Monday*) t = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4}; y -= Boole[m < 3]; Mod[y + IntegerPart[y/4.] - IntegerPart[y/100.] + IntegerPart[y/400.] + t[[m]] + d + 1, 7, 1] ] ] I used it in my ISOWeek like this ISOWeekX2[x_] := Module[{baseDate, year454, weekNames, numWeek}, year454 = First@DatePlus[x, -Mod[weekDayC @@ x - 1, 7, 1] + 4]; baseDate = {year454, 1, 3}; numWeek = IntegerPart[ 1/7 (DateDifference[baseDate, x] + weekDayC @@ baseDate + 5)]; {year454, numWeek} ] But the there are 2 another slow parts, that are DateDifference and DataPlus. But to get rid of that that is a lot of job.. Native functions would be great...

**Follow-Ups**:**Re: IsoWeek Function***From:*"Hans Michel" <hmichel@cox.net>

**References**:**IsoWeek Function***From:*Murta <rodrigomurtax@gmail.com>