[R] POSIX and summer savings time redux

Prof Brian Ripley ripley at stats.ox.ac.uk
Thu Dec 7 12:09:54 CET 2006


CET is not a valid timezone *on Windows*: please do RTFM.
E.g. ?Sys.timezone says

      'Sys.timezone' returns an OS-specific character string, possibly
      an empty string.  It may be possible to set the timezone via the
      environment variable '"TZ"': see 'as.POSIXlt'. Windows is
      notorious for naming its timezones differently from the official
      names.

and ?as.POSIXlt points you at

      a specification of the form 'GST-1GDT',

which seems to be the same as CET, and that works on my Windows laptop.
It is also possible that tz="" works for you: it seems to for me when I 
set my machine to CET.

On Thu, 7 Dec 2006, Derek Eder wrote:

> When I tried Professor Ripley's example (below), the "tz" argument
> failed to adjust clock time from UTC.
>
> > (z <- ISOdatetime(1970,1,1,0,0,0, tz="UTC")+1165398135729/1000)
> [1] "2006-12-06 09:42:15 UTC"
>
>
> > format(z, "%Y-%m-%d %H:%M:%OS3",tz = "CET")
> [1] "2006-12-06 09:42:15.729"
> # expected CET (Central European Time) clock time is UTC + 1 hour time
> zone adjustment
>
>
> Am I running into platform dependencies?
>
> (my platform)
> platform       i386-pc-mingw32
> arch           i386
> os             mingw32
> system         i386, mingw32
> status
> major          2
> minor          4.0
> year           2006
> month          10
> day            03
> svn rev        39566
> language       R
> version.string R version 2.4.0 (2006-10-03)
>
>
> Thank you most sincerely,
>
> Derek Eder
>
>
>
> Prof Brian Ripley wrote:
>> On Wed, 6 Dec 2006, Derek Eder wrote:
>>
>>> I have a time stamp in UTC (GMT) time:
>>>
>>>>  format(ISOdatetime(1970,1,1,0,0,0)+1165398135729/1000,"%Y-%m-%d
>>> %H:%M:%OS3")
>>>
>>> "2006-12-06 09:42:18.823"  (note millisecond accuracy, but not relevant
>>> to question here)
>>
>> But it is the wrong answer, and not what my system gives.
>>
>>> Now, this time stamp actually "happened" at local (Swedish) time one
>>> hour later (10:42).
>>
>> So you need to tell R that it was in UTC, which is what the 'tz'
>> argument is for:
>>
>>> (z <- ISOdatetime(1970,1,1,0,0,0, tz="UTC")+1165398135729/1000)
>> [1] "2006-12-06 09:42:15 UTC"
>>> format(z, "%Y-%m-%d %H:%M:%OS3", tz="CET")
>> [1] "2006-12-06 10:42:15.729"
>>
>>> Regarding summer/winter adjustments in time ("spring forward, fall
>>> back"):   Is there a way of automatically recovering the local time
>>> adjustments for a given date?  E.g., a date/time in springtime = GMT +2
>>> , else GMT +1
>>
>> Is the above not enough?  You can unpick it if you want to get the shift.
>>
>
>
>

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




More information about the R-help mailing list