Prof Brian Ripley ripley at stats.ox.ac.uk
Mon Dec 12 15:44:59 CET 2005

```On Mon, 12 Dec 2005, Peter Dalgaard wrote:

> Prof Brian Ripley <ripley at stats.ox.ac.uk> writes:
>
>> On Mon, 12 Dec 2005, ronggui wrote:
>>
>>>> x<-as.Date(c("2005-07-01", "2005-07-02","2005-07-03","2005-07-04","2005-07-05"))
>>>> weekdays(x)
>>> [1] "ÐÇÆÚÎå" "ÐÇÆÚÁù" "ÐÇÆÚÈÕ" "ÐÇÆÚÒ»" "ÐÇÆÚ¶þ"
>>>
>>>> months(x)
>>> [1] "ÆßÔÂ" "ÆßÔÂ" "ÆßÔÂ" "ÆßÔÂ" "ÆßÔÂ"
>>
>>
>> He asked for week numbers.  That's nothing like as easy, as it is not
>> well-defined.  But
>>
>>> strftime(as.POSIXlt(x), "%U")
>> [1] "26" "26" "27" "27" "27"
>>
>> is one possibility ("%W" is another).  This approach will do the other
>> requests just as easily.
>
> %W seems to be what is known as "ISO dates" (week starts on Monday),
> except that
>
>>  strftime(as.POSIXlt(as.Date("2005-01-01")), "%U")
> [1] "00"
>
> should be week 53, 2004 according to my printed calendar, and emacs
> calendar-mode too.

I _did_ say

>> That's nothing like as easy, as it is not well-defined.

The POSIX definition is

%U
Replaced by the week number of the year as a decimal number [00,53].
The first Sunday of January is the first day of week 1; days in the
new year before this are in week 0.

%W
Replaced by the week number of the year as a decimal number [00,53].
The first Monday of January is the first day of week 1; days in the
new year before this are in week 0.

so it is doing what it is documented to do.  I'd take POSIX as more
definitive than Emacs ....

--
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595
```