I have found the various "tz" arguments not to provide the support I would like 
in terms of arbitrary timezones. For now I use Sys.setenv(TZ="timezone_spec") 
prior to input or output, and do not use the tz arguments.

In your case, I would consider keeping a character copy of the input to write 
out later.
-- 
Sent from my Android phone with K-9 Mail. Please excuse my brevity.

"Daniel Nüst" <[email protected]> wrote:

2011/3/11 David Winsemius <[email protected]>: > On Mar 10, 2011, at 8:46 
PM, David Winsemius wrote: >> On Mar 10, 2011, at 11:17 AM, Daniel Nüst wrote: 
>>> I try to parse a time stamp with time zone. I essentially just want to >>> 
parse the time stamp "1995-05-25T15:30:00+10:00" and output it exactly >>> like 
it is, using the POSIX classes (or is that impossible?). >> >> Does this work? 
>> >> as.POSIXlt(gsub("T.*(\\+|\\-)..(:)", "", # get rid of the colon in the tz 
>>          # but preserve the sign for the %z format string >>          
gsub("T", " ", "1995-05-25T15:30:00-1000")), # replace the "T" >> with a space 
>>           format="%Y-%m-%d %H:%M:%S%z") > > Daniel; > > That example didn't 
have the full complexity of the question so I didn't > notoce that I had 
incorrectly constructed a regex OR within the colon > handling clause. I 
neverdid figure out how to do that properly, but htis > should handle it: > > 
as.POSIXlt(gsub("T", " ", #change T to space > +          
  # but
preserve the sign for the %z format string > +           
gsub("(T..:..:.....):", "\\1", "1995-05-25T15:30:00-10:00")), >  
format="%Y-%m-%d %H:%M:%S%z") > [1] "1995-05-25 21:30:00" > > To get output in 
GMT add tz argument to as.POSIXlt: > >> as.POSIXlt(gsub("T", " ", #change T to 
space > +           # but preserve the sign for the %z format string > +        
   gsub("(T..:..:.....):", "\\1", "1995-05-25T15:30:00-10:00")), >  
format="%Y-%m-%d %H:%M:%S%z", tz="GMT") > [1] "1995-05-26 01:30:00 GMT" This 
procudes the same output on my machine, but still does not solve the problem, 
which lies on the output side, sorry if I was not clear about that before: time 
<- as.POSIXlt(gsub("T", " ",     # change T to space                            
 # but preserve the sign for the %z format string                               
 gsub("(T..:..:.....):", "\\1", "1995-05-25T15:30:00-10:00")),           
format="%Y-%m-%d %H:%M:%S%z") #, tz="GMT") format(x = time, format = "%Y-%m-%d 
%H:%M:%S%z") # [1] "1995-05-26 01:30:00Mitteleuropäische Zeit" strftime(x = 
 time,
format = "%Y-%m-%d %H:%M:%S%z") # [1] "1995-05-26 03:30:00Mitteleuropäische 
Sommerzeit" But I need "...01:30:00+01:00", or "...01:30:00+0100", as I expect 
from %z because in ?strptime I read: "%z Signed offset in hours and minutes 
from UTC, so -0800 is 8 hours behind UTC." and "Note that when %z or %Z is used 
for output with an object with an assigned timezone an attempt is made to use 
the values for that timezone — but it is not guaranteed to succeed." Does 
this just mean it just won't work? Let me rephrase my question: How can I 
create a time object from the character string "1995-05-25T15:30:00-10:00" and 
get exactly the same character string again when formatting it/printing it? 
Thanks for any help! /Daniel >>> >>>> sessionInfo() >>> >>> R version 2.12.1 
(2010-12-16) >>> Platform: x86_64-pc-mingw32/x64 (64-bit) >>> >>> locale: >>> 
[1] LC_COLLATE=German_Germany.1252  LC_CTYPE=German_Germany.1252 >>> [3] 
LC_MONETARY=German_Germany.1252 LC_NUMERIC=C >>> [5]
LC_TIME=German_Germany.1252 >>> >>> attached base packages: >>> [1] stats     
graphics  grDevices utils     datasets  methods   base >>> >>> other attached 
packages: >>> [1] rj_0.5.2-1 >>> >>> loaded via a namespace (and not attached): 
>>> [1] rJava_0.8-8  tools_2.12.1 >>>> >>>> t1 <- 
strptime("1995-05-25T15:30:00+10:00", format = >>>> "%Y-%m-%dT%H:%M:%OS") >>>> 
t2 <- strptime("1995-05-25T15:30:00+10:00", format = >>>> 
"%Y-%m-%dT%H:%M:%OS%z") >>>> >>>> strftime(t1, format = "%Y-%m-%dT%H:%M:%OS") 
>>> >>> [1] "1995-05-25T15:30:00" >>>> >>>> strftime(t1, format = 
"%Y-%m-%dT%H:%M:%OS%z") >>> >>> [1] "1995-05-25T15:30:00Mitteleuropäische 
Sommerzeit" >>>> >>>> # Ends in "Mitteleuropäische Sommerzeit", not in +10:00, 
so time zone is >>>> ignored! >>>> # Also no difference beetween %z and %z ! 
>>>> strftime(t1, format = "%Y-%m-%dT%H:%M:%OS%Z") >>> >>> [1] 
"1995-05-25T15:30:00Mitteleuropäische Sommerzeit" >>>> >>>> # All this does 
NOT remove the "Mitteleuropäische Zeit" from the >
 >>>
strftime output!! >>>> >>>> # Can locale solve the problem? >>>> 
Sys.getlocale(category = "LC_TIME") >>> >>> [1] "German_Germany.1252" >>>> >>>> 
Sys.setlocale("LC_TIME", "English") >>> >>> [1] "English_United States.1252" 
>>>> >>>> strftime(t1, format = "%Y-%m-%dT%H:%M:%OS%z") >>> >>> [1] 
"1995-05-25T15:30:00Mitteleuropäische Sommerzeit" >>>> >>>> # [1] 
"1995-05-25T15:30:00Mitteleuropäische Sommerzeit" -- No change. >>>> >>>> # 
does t1 actually have time zone? >>>> attributes(t1) >>> >>> $names >>> [1] 
"sec"   "min"   "hour"  "mday"  "mon"   "year"  "wday"  "yday" >>>  "isdst" >>> 
>>> $class >>> [1] "POSIXlt" "POSIXt" >>> >>>> >>>> format(t1, format = 
"%Y-%m-%dT%H:%M:%OS%z") # usetz = TRUE) # no change >>>> on usetz >>> >>> [1] 
"1995-05-25T15:30:00Mitteleuropäische Sommerzeit" >>>> >>>> # Is the : in 
offset the problem? >>>> t3 <- strptime("1995-05-25T15:30:00+1000", format = 
>>>> "%Y-%m-%dT%H:%M:%S%z") >>>> attributes(t3) >>> >>> $names >>> [1] "sec"   
"min"   "hour"  "md
 ay" 
"mon"   "year"  "wday"  "yday" >>>  "isdst" >>> >>> $class >>> [1] "POSIXlt" 
"POSIXt" >>> >>>> format(t3, format = "%Y-%m-%dT%H:%M:%OS%z") >>> >>> [1] 
"1995-05-25T07:30:00Mitteleuropäische Sommerzeit" >>>> >>>> # [1] 
"1995-05-25T07:30:00Mitteleuropäische Sommerzeit" >>>> >>>> strftime(t1, 
format = "%Y-%m-%dT%H:%M:%OS%z", tz = "+0200") # no effect >>>> on setting tz 
>>> >>> [1] "1995-05-25T15:30:00Mitteleuropäische Sommerzeit" >>>> >>>> 
Sys.setenv(TZ="GMT") # no working effect on format and strftime >>> >> -- >> >> 
David Winsemius, MD >> West Hartford, CT >> 
>>_____________________________________________
>> [email protected] mailing list >> 
>> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting 
>> guide >> http://www.R-project.org/posting-guide.html >> and provide 
>> commented, minimal, self-contained, reproducible code. > > David Winsemius, 
>> MD > West Hartford, CT > >_____________________________________________
[email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-help 
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html 
and provide commented, minimal, self-contained, reproducible code. 


        [[alternative HTML version deleted]]

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to