From ripley at stats.ox.ac.uk  Thu Mar 29 18:31:06 2007
From: ripley at stats.ox.ac.uk (ripley at stats.ox.ac.uk)
Date: Thu, 29 Mar 2007 18:31:06 +0200 (CEST)
Subject: [Rd] R4.1: seq.POSIXt, tz="AEST" (PR#9572)
Message-ID: <20070329163106.A5F3C5DE81@slim.kubism.ku.dk>

I think I have managed to track this down, but only by setting a Windows 
box to that timezone via the control panel.

One cannot set a timezone in Windows to one with Australian DST settings, 
and according to my Linux machine you were in DST on 1968-02-28.  That's 
the problem as we compare 1968 with a later year to find the DST settings, 
and during those calculations Windows 'corrects' the tm structure (it is 
not supposed to according to POSIX).

A workaround to the non-POSIX compliance will appear in 2.5.0.

On Tue, 20 Mar 2007, Felix Andrews wrote:

> I am sorry, "AEST" was wrong. I can't work out what timezone code it is, but
> my default timezone here in eastern australia prints as:
>> as.POSIXct("1970-01-01", tz="")
> [1] "1970-01-01 AUS Eastern Daylight Time"
>
> and that is the one that has repeated dates before 1970.
>
> But I take your point that it is fundamentally a problem with Windows.
>
> --Felix
>
>
> On 3/19/07, Prof Brian Ripley <ripley at stats.ox.ac.uk> wrote:
>> 
>> Hmm, AEST is not a valid time zone on Windows.
>> See ?as.POSIXlt for one of several places where this is documented.
>> 
>> But in any case, the underlying problem is in the OS, and we only try to
>> work around it to the best of our knowledge (and that excludes
>> undocumented time zones).
>> 
>> 
>> On Mon, 19 Mar 2007, felix at nfrac.org wrote:
>> 
>> > Times from seq.POSIXt come out wrong in AEST timezone around Feb 29
>> every
>> > leap year before 1970 (on Windows XP).
>> >
>> > According to help(DateTimeClasses), this is handled by "our own C code".
>> >
>> >> x <- as.POSIXct("1968-02-27") # tz="AEST"
>> >> x.gmt <- as.POSIXct("1968-02-27", tz="GMT")
>> >> data.frame(
>> >     GMT=seq(x.gmt, by="day", length=8),
>> >     byday=seq(x, by="day", length=8),
>> >     byDST=seq(x, by="DSTday", length=8))
>> >         GMT      byday      byDST
>> > 1 1968-02-27 1968-02-27 1968-02-27
>> > 2 1968-02-28 1968-02-28 1968-02-28
>> > 3 1968-02-29 1968-03-01 1968-03-02
>> > 4 1968-03-01 1968-03-02 1968-03-02
>> > 5 1968-03-02 1968-03-02 1968-03-02
>> > 6 1968-03-03 1968-03-03 1968-03-03
>> > 7 1968-03-04 1968-03-04 1968-03-04
>> > 8 1968-03-05 1968-03-05 1968-03-05
>> >
>> >> R.version
>> >               _
>> > platform       i386-pc-mingw32
>> > arch           i386
>> > os             mingw32
>> > system         i386, mingw32
>> > status
>> > major          2
>> > minor          4.1
>> > year           2006
>> > month          12
>> > day            18
>> > svn rev        40228
>> > language       R
>> > version.string R version 2.4.1 (2006-12-18)
>> >
>> >
>> >
>> >
>> 
>> --
>> 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
>> 
>

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



[Rd] R4.1: seq.POSIXt, tz="AEST" (PR#9572)
ripley at stats.ox.ac.uk