[R] Daylight savings time and conversion to POSIXt (arghh!)

Don MacQueen macq at llnl.gov
Mon May 6 16:56:36 CEST 2002


Thank you both.
-Don

At 10:48 AM +0100 5/4/02, ripley at stats.ox.ac.uk wrote:
>The issue is that you are supplying a time to strptime that does not exist
>in the timezone your computer is running in.

Yes, and supplying a time that doesn't exist is just asking for trouble.

>   I did not expect this to be
>relevant, but it seems some OSes will adjust it (and Solaris and Linux
>adjust it differently).

What Solaris does with it isn't unreasonable, I think. Given a 
non-existant time, it has to be interpreted in either daylight 
savings or standard time, one or the other. They chose one.

>
>As Peter suggests, the workaround on Solaris (where TZ is always set) is
>to set TZ to GMT.  But that's not what the code should do internally, as
>on some systems it cannot be unset. I suspect I can work around this, with
>one small problem (what should be isdst component be?).

I would like to send my thoughts on this separately and directly.

>
>I am getting a little fed up with working around undocumented `features'
>of calendar-time support on various OSes!

Undoubtedly!

Peter's method meets my needs; I don't need any further work on this.

I had tried setting TZ to GMT. Looking back, it appears that I had 
made an error in that attempt, otherwise I would have found that it 
works.

>
>On 4 May 2002, Peter Dalgaard BSA wrote:
>
>>  Don MacQueen <macq at llnl.gov> writes:
>>
>>  > The third element is converted as if it were PDT, a 7 hour offset from
>>  > GMT, when it is actually an 8 hour offset. This is not a problem. In
>>  > fact, it is easy to handle both the first time and the last time
>>  > correctly with
>>  >
>>  > >  gcnv <- as.POSIXct(gdat,tz='GMT') + 28800
>>  > >  gcnv
>>  > [1] "2002-04-07 01:30:00 PST" "2002-04-07 01:30:00 PST"
>>  > [3] "2002-04-07 04:30:00 PDT"
>>  >
>>  > And verify that the first and last are two hours apart with:
>>  > >  diff(as.numeric(gcnv))
>>  > [1]    0 7200
>>  >
>>  > But the middle one is still wrong. If they were correctly converted I
>>  > would see 0 3600 7200.
>>  >
>>  > This suggests to me that as.POSIXct() isn't _fully_ honoring the 
>>tz argument.
>>
>>  Yes, there seems to be a bug there.
>>
>>  I get a slightly different effect though:
>>
>>  > as.POSIXct(gdat,tz='GMT')
>>  [1] "2002-04-07 03:30:00 CEST" "2002-04-07 04:30:00 CEST"
>>  [3] "2002-04-07 05:30:00 CEST"
>>  > unclass(as.POSIXct(gdat,tz='GMT'))
>>  [1] 1018143000 1018146600 1018150200
>>
>>  > Sys.putenv(TZ="US/Pacific")
>>  > as.POSIXct(gdat,tz='GMT')
>>  [1] "2002-04-06 17:30:00 PST" "2002-04-06 19:30:00 PST"
>>  [3] "2002-04-06 19:30:00 PST"
>>  > unclass(as.POSIXct(gdat,tz='GMT'))
>>  [1] 1018143000 1018150200 1018150200
>>
>>  The workaround would be along the lines of
>>
>>  > {x<-Sys.getenv("TZ");Sys.putenv(TZ="GMT")
>>  +  z<-as.POSIXct(gdat);Sys.putenv(TZ=x);z}+28800
>>  [1] "2002-04-07 01:30:00 PST" "2002-04-07 03:30:00 PDT"
>>  [3] "2002-04-07 04:30:00 PDT"
>>
>>  which is probably what as.POSIXlt should do internally too.
>>
>>  --
>>     O__  ---- Peter Dalgaard             Blegdamsvej 3
>>    c/ /'_ --- Dept. of Biostatistics     2200 Cph. N
>>   (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
>>  ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)             FAX: (+45) 35327907
>> 
>>-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
>>  r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
>>  Send "info", "help", or "[un]subscribe"
>  > (in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
>  > 
>_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
>  >
>
>--
>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 272860 (secr)
>Oxford OX1 3TG, UK                Fax:  +44 1865 272595


-- 
--------------------------------------
Don MacQueen
Environmental Protection Department
Lawrence Livermore National Laboratory
Livermore, CA, USA
--------------------------------------
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list