[R] Problem(?) in strptime() -- short version

Don MacQueen macq at llnl.gov
Mon Apr 8 23:13:00 CEST 2002


I decided my earlier email on this topic was rather long and wordy; 
here's a condensed version.

I am sitting at a Solaris computer in the US/Pacific timezone.
I have a file of data having times that includes the following three values

   2002-4-7 1:30:00 GMT
   2002-4-7 2:30:00 GMT
   2002-4-7 3:30:00 GMT

I have not been able to find a way to correctly convert these to 
either of the POSIX datetime classes with the OS timezone set to 
US/Pacific. And I've tried everything I could think of. The bottom 
line appears to be the fact that strptime() always uses the local 
timezone.

>  Sys.getenv('TZ')
           TZ
"US/Pacific"
>
>  gdat <- c('2002-4-7 1:30:00 GMT',
+           '2002-4-7 2:30:00 GMT',
+           '2002-4-7 3:30:00 GMT')
>
>
>  as.POSIXct(gdat)
[1] "2002-04-07 01:30:00 PST" "2002-04-07 01:30:00 PST" "2002-04-07 
03:30:00 PDT"
>
>  as.POSIXct(gdat,tz='GMT')
[1] "2002-04-06 17:30:00 PST" "2002-04-06 17:30:00 PST" "2002-04-06 
19:30:00 PST"
>
>  strptime(gdat,'%Y-%m-%d %H:%M:%S')
[1] "2002-04-07 01:30:00" "2002-04-07 01:30:00" "2002-04-07 03:30:00"
>
>  strptime(gdat,'%Y-%m-%d %H:%M:%S %Z')
[1] "NA" "NA" "NA"

The middle element is converted/interpreted incorrectly.

>  version
          _
platform sparc-sun-solaris2.7
arch     sparc
os       solaris2.7
system   sparc, solaris2.7
status
major    1
minor    4.1
year     2002
month    01
day      30
language R
>
>  Sys.getlocale()
[1] "C"

If I setenv TZ GMT before starting R, then the data is converted 
correctly. However, this is not entirely satisfactory, because 
ultimately I want to work with the data in my local timezone (for 
example, make graphs where the time axis is in local time), and that 
means going through a multiple step process:

   1) setenv TZ GMT
   2) start R, read the data
   3) quit R
   4) setenv TZ US/Pacific
   5) start R, work with the data

strptime() appears to rely on the operating system's strptime, so 
perhaps the problem is out of R's hands, so to speak. But it does 
seem reasonable that I should be able to convert such data no matter 
where I am. For example, it is my understanding that a world-wide 
standard among meteorologists is that times are always recorded in 
GMT.
-- 
--------------------------------------
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