Re: Numbering weeks for the years of this century. An easy problem?

• To: mathgroup at smc.vnet.net
• Subject: [mg89138] Re: Numbering weeks for the years of this century. An easy problem?
• From: "Hans Michel" <hmichel at cox.net>
• Date: Mon, 26 May 2008 06:25:17 -0400 (EDT)
• References: <g18hl1\$kcr\$1@smc.vnet.net>

```Guillermo:

A google search for ISO Week and Excel would yield lot of choices.

For Excel solution not using the WEEKNUM which they know is wrong function
see
http://msdn.microsoft.com/en-us/library/bb277364.aspx

Now if you take the following VB solution from that page:

Public Function IsoWeekNum(d1 As Date) As Integer
' Provided by Daniel Maher.
Dim d2 As Long
d2 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3)
IsoWeekNum = Int((d1 - d2 + Weekday(d2) + 5) / 7)
End Function

Convert to Mathematica

ISOWeek[x_] := Module[{d2},
d2 = DateList[{ToExpression[
DateString[
DatePlus[
x, {(-(Flatten[
Position[{"Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"},
DateString[DatePlus[x, {-1, "Day"}], {"DayName"}],
1]])[[1]] + 4), "Day"}], "Year"]], 1, 3, 0, 0, 0}];
IntegerPart[(DateDifference[d2, x] +
Flatten[
Position[{"Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"},
DateString[d2, {"DayName"}], 1]][[1]] + 5)/7]
]
Use as follows
ISOWeek[DateList[{2000, 1, 1, 0, 0, 0}]]

Returns same value as VB solution, does not make it correct!

On this news group there have been solutions to get the equivalent of
excel's DateSerial. This vb solution has many dependencies on how Microsoft
calculates and serializes dates.

I have not tested the VB nor the Mathematica code translation enough to say
this is a solution but leave the rest to others. There is plenty of room for
improvement. Because translation from VB "Sunday" is first day of the week;
but in ISO "Monday" is first day.

Hans
http://emr.cs.iit.edu/home/reingold/calendar-book/second-edition/

http://personal.ecu.edu/MCCARTYR/isowdcal.html

http://personal.ecu.edu/MCCARTYR/ISOwdALG.txt

http://www.probabilityof.com/excel.shtml

http://www.cpearson.com/excel/weeknum.htm
"Guillermo Sanchez" <guillermo.sanchez at hotmail.com> wrote in message
news:g18hl1\$kcr\$1 at smc.vnet.net...
> According to ISO 8601:2004(E), parr. 2.2.10 the  a calendar week
> number is defined as ordinal number which identifies a calendar week
> within its calendar year according to the rule that the first calendar
> week of a year is that one which includes the first Thursday of that
> year and that the last calendar week of a calendar year is the week
> immediately preceding the first calendar week of the next calendar year.
>
> Could any body build a function for numbering the week for the years
> this century?
>
>
>
> A think it is not an easy problem (for instance teh solution given by
> Excel sometime is wrong
> A solution for period 2000-2027 is also wellcome. In this period the
> 53-week years are 2004, 2009, 2015, 2020, 2026;
>
> Guillermo
>

```

• Prev by Date: Re: Re: No Show