On Mar 11, 2011, at 8:54 AM, Daniel Nüst wrote:
2011/3/11 David Winsemius <dwinsem...@comcast.net>:
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?
> x <- 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")
> x
[1] "1995-05-26 01:30:00 GMT"
> format(x, "%Y-%m-%d %H:%M:%S%z")
[1] "1995-05-26 01:30:00+0000"
> format(x, "%Y-%m-%dT%H:%M:%S%z")
[1] "1995-05-26T01:30:00+0000"
It is easy todeal with the "T" separator. You did say that the ":" was
optional in the output, didn't you?
--
David.
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" "mday" "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
______________________________________________
R-help@r-project.org 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
______________________________________________
R-help@r-project.org 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
______________________________________________
R-help@r-project.org 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.