Skip to content

Number of Days Between Dates: Incorrect Results For Date Calucations.

4 messages · gerald.herbert@hubbardbreeders.com, Gabor Grothendieck, Dimitris Rizopoulos +1 more

#
In some cases, incorrect results are produced by the code below intended to
calculate the number of days between 2 dates.  The year in question was a
leap year.

Note the results for 2004-04-04 and 2004-04-05 are the same! They should be
37 and 38 respectively.
[1] 35
[1] 36
[1] 37
[1] 37
[1] 38
as.POSIXct("2004-02-27"),units="days"))
[1] 38
as.POSIXct("2004-02-27"),units="days"))
[1] 37
as.POSIXct("2004-02-27"),units="days"))
[1] 37

It appears that difftime() and "-" are producing invalid results.


Regards,

Gerald Herbert
Message-ID: <!~!UENERkVCMDkAAQACAAAAAAAAAAAAAAAAABgAAAAAAAAAUmL1BciWlkSJzbtE4pRe0sKAAAAQAAAA7YffOmYFSU645jkej1wJmwEAAAAA@hubbardbreeders.com>
#
The results are actually correct if you consider daylight savings time.

For example, try this and note that the difference is 23 hours, not 24 hours:

   as.POSIXct("2004-04-05") - as.POSIXct("2004-04-04")

You can address this by either using Date or chron classes or adding
the tz = "GMT" argument on your as.POSIXct calls as GMT does not
have daylight savings time.

See the Help Desk article in R News 4/1 for more on this.


On 2/21/06, gerald.herbert at hubbardbreeders.com
<gerald.herbert at hubbardbreeders.com> wrote:
#
check again your results with as.integer() replaced by round(); check 
also ?as.integer for its usage.

I hope it helps.

Best,
Dimitris

----
Dimitris Rizopoulos
Ph.D. Student
Biostatistical Centre
School of Public Health
Catholic University of Leuven

Address: Kapucijnenvoer 35, Leuven, Belgium
Tel: +32/(0)16/336899
Fax: +32/(0)16/337015
Web: http://www.med.kuleuven.be/biostat/
     http://www.student.kuleuven.be/~m0390867/dimitris.htm


----- Original Message ----- 
From: <gerald.herbert at hubbardbreeders.com>
To: <r-help at stat.math.ethz.ch>
Sent: Tuesday, February 21, 2006 4:48 PM
Subject: [R] Number of Days Between Dates: Incorrect Results For 
DateCalucations.
Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm
#
<gerald.herbert at hubbardbreeders.com> writes:
Nope. First, it depends on your timezone. Over here, they do actually
differ. However, a few weeks earlier, we have the similar phenomenon
Time difference of 30.95833 days
Time difference of 30 days

which is of course because March 28 was only 23 hours long which is in
turn because
[1] "2004-03-28 CET"
[1] "2004-03-29 CEST"
 
Get it?