Re: IsoWeek Function

• To: mathgroup at smc.vnet.net
• Subject: [mg127322] Re: IsoWeek Function
• From: "Hans Michel" <hmichel at cox.net>
• Date: Mon, 16 Jul 2012 05:00:28 -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>

```See:

http://mathematica.stackexchange.com/questions/4551/determining-the-week-of-
a-year-from-a-given-date

mathematica/PbwD8fETs3A

There maybe even easier ways to implement this functionality.

http://en.wikipedia.org/wiki/Calculating_the_day_of_the_week

Hans

-----Original Message-----
From: Murta [mailto:rodrigomurtax at gmail.com]
Sent: Sunday, July 15, 2012 10:44 PM
To: mathgroup at smc.vnet.net
Subject: [mg127322] IsoWeek Function

Hi All

Please, in Mathematica 9 include IsoWeek functions in the standard into
DateList and DateString. It would be simple if we have a "ISOWeekYear" and
"ISOWeekNumber" as in Oracle and SQL.
Today it's necessary to implemente our own functions, and I get very slow
performance results.
I use that to take ISO Week numbers:

ISOWeek[x_]:=Module[{baseDate,year454,weekNames,numWeek},

weekNames={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Satu
rday"};

year454=First@DateList@DatePlus[x,-Position[weekNames,DateString[DatePlus[x,
-1],{"DayName"}],1][[1,1]]+4];
baseDate={year454,1,3};

numWeek=IntegerPart[1/7(DateDifference[baseDate,x]+Position[weekNames,DateSt
ring[baseDate,{"DayName"}],1][[1,1]]+5)];
{year454,numWeek}
]

Example
ISOWeek["20120101"]
{2011,52}

I tried to compile it, but with no sucess..
Any clue?
Another tip for the developer is create an string "WeekDayNumber", that can
return the week day number. Today we have option just to names.