Date time conversion bug (as.POSIXct)?
On Jan 11, 2013, at 5:12 AM, Dries Verheyen wrote:
There is something wrong, I think, with the date-time conversion from a numeric value if you use Central European Time (CET) as timezone. Examples from R: If I use the GMT time zone it is OK, I get the same time back from as.POSIXct as I entered
as.POSIXct(as.numeric(strptime("30/01/2012 13:00:00", format="%d/%m/%Y
%H:%M:%S",tz="GMT")),origin="1970-01-01",tz="GMT")
[1] "2012-01-30 13:00:00 GMT" If I go from CET to GMT there is also no problem:
as.POSIXct(as.numeric(strptime("30/01/2012 13:00:00", format="%d/%m/%Y
%H:%M:%S",tz="CET")),origin="1970-01-01",tz="GMT") [1] "2012-01-30 12:00:00 GMT" In winter we are 1 hour ahead of Greenwich. Also in summer it is OK (2 hours ahead of Greenwich):
as.POSIXct(as.numeric(strptime("30/05/2012 13:00:00", format="%d/%m/%Y
%H:%M:%S",tz="CET")),origin="1970-01-01",tz="GMT") [1] "2012-05-30 11:00:00 GMT" The problem occurs when I use both the same time zone, if it is not GMT:
as.POSIXct(as.numeric(strptime("30/01/2012 13:00:00", format="%d/%m/%Y
%H:%M:%S",tz="CET")),origin="1970-01-01",tz="CET") [1] "2012-01-30 12:00:00 CET"
as.POSIXct(as.numeric(strptime("30/05/2012 13:00:00", format="%d/%m/%Y
%H:%M:%S",tz="CET")),origin="1970-01-01",tz="CET") [1] "2012-05-30 12:00:00 CEST"
as.POSIXct(as.numeric(strptime("30/05/2012 13:00:00", format="%d/%m/%Y
%H:%M:%S",tz="EST")),origin="1970-01-01",tz="EST")
[1] "2012-05-30 18:00:00 EST" It looks like the function just puts the name of the time zone behind the time calculated in GMT, and does not calculate the time in the asked time zone.
It works perfectly fine the way it's supposed to - you just give it wrong input. What you get from as.numeric(...) is the offset from the epoch (1970-01-01 GMT!) yet you are then forcing as.POSIXct to interpret it as offset from the local time zone which is obviously wrong. I suppose what you really wanted is
.POSIXct(as.numeric(strptime("30/05/2012 13:00:00", format="%d/%m/%Y%H:%M:%S",tz="EST")),"EST")
[1] "2012-05-30 13:00:00 EST" The problem in your case is that you want to have origin in a different timezone than the result which is a bit convoluted. Cheers, Simon
Is it just how the function works? because for me it is a bit confusing like that. -- View this message in context: http://r.789695.n4.nabble.com/Date-time-conversion-bug-as-POSIXct-tp4655215.html Sent from the R devel mailing list archive at Nabble.com.
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel