MathGroup Archive 2012

[Date Index] [Thread Index] [Author Index]

Search the Archive

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



  • Prev by Date: can somebody help ?
  • Next by Date: Plotting: how does one reverse the time axis tick mark values?
  • Previous by thread: Re: IsoWeek Function
  • Next by thread: Re: IsoWeek Function