I have a problem with results from difftime being 1 hour different than expected. 2 examples are given below:
datetime <- matrix(data=rbind(c("2012-03-31 21:00:00", "2012-04-01 00:00:00", "2012-04-01 03:00:00", "2012-04-01 06:00:00"), c("2012-10-06 21:00:00", "2012-10-07 00:00:00", "2012-10-07 03:00:00", "2012-10-07 06:00:00")), ncol=4, nrow=2) for (row in 1:2) { x <- datetime[row,] x1=x[1:length(x)-1] x2=x[2:length(x)] xd=difftime(x2,x1) print (x) print (xd) } [1] "2012-03-31 21:00:00" "2012-04-01 00:00:00" "2012-04-01 03:00:00" "2012-04-01 06:00:00" Time differences in hours [1] 3 4 3 attr(,"tzone") [1] "" [1] "2012-10-06 21:00:00" "2012-10-07 00:00:00" "2012-10-07 03:00:00" "2012-10-07 06:00:00" Time differences in hours [1] 3 2 3 attr(,"tzone") [1] "" Accurate results would be 3 3 3 (hours) in both cases. The problem occurs randomly, but only around midnight. All the dates between "2012-04-01 06:00:00" and "2012-10-06 21:00:00" are fine. I have seen postings about problems with "POSIXlt" and "POSIXct" accuracy because of truncation rather than rounding of floating point representations. The response was that it was expected behaviour. So my question is this expected behaviour, have I used difftime incorrectly, and if not, is there a set of date/time functions and classes that use integer representation to give more accurate results? I am new to R and I may well be using the wrong set of functions. Garry [[alternative HTML version deleted]] ______________________________________________ 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.