# [R] Time difference in months? (difftime, units)

Gabor Grothendieck ggrothendieck at myway.com
Wed Nov 17 17:16:53 CET 2004

```Andy Bunn <abunn <at> whrc.org> writes:

:
: Is there a way to calculate the number of months between dates?
:
: StartDate <- strptime("01 March 1950", "%d %B %Y")
: EventDates <- strptime(c("01 April 1955", "01 July 1980"), "%d %B %Y")
: difftime(EventDates, StartDate)
:
: So, there are 61 months between 01 March 1950 and 01 April 1955. There are
: 364 months between 01 March 1950 and 01 July 1980. What I want is for there
: to be a "months" argument to units in difftime. Anybody have a bright idea?
: Is there a better way to approach this than difftime?

1. There are an average of 365.25/12 days per month so the following
expression gives the number of months between d1 and d2:

# test data
d1 <- as.Date("01 March 1950", "%d %B %Y")
d2 <- as.Date(c("01 April 1955", "01 July 1980"), "%d %B %Y")

# calculation
round((d2 - d1)/(365.25/12))

2. Another possibility is to get the length of seq.Dates like this:

as.Date.numeric <- function(x) structure(floor(x+.001), class = "Date")
sapply(d2, function(d2) length(seq(d1, as.Date(d2), by = "month")))-1

```