przelicz czas różny na lata, miesiące i dni

Jak mogę dokładnie przeliczyć produkty (jednostki w dniach)difftime poniżej do lat, miesięcy i dni?

difftime(Sys.time(),"1931-04-10")
difftime(Sys.time(),"2012-04-10")

Robi to lata i dni, ale jak mogę uwzględnić miesiące?

yd.conv<-function(days, print=TRUE){
    x<-days*0.00273790700698851
    x2<-floor(x)
    x3<-x-x2
    x4<-floor(x3*365.25)
    if (print) cat(x2,"years &",x4,"days\n")
    invisible(c(x2, x4))
}

yd.conv(difftime(Sys.time(),"1931-04-10"))
yd.conv(difftime(Sys.time(),"2012-04-10"))

Nie wiem też, jak zdefiniować miesiące. Czy 4 tygodnie będą brane pod uwagę przez miesiąc, czy przez ten sam dzień miesiąca. W przypadku późniejszej definicji miesiąca, jeśli początkowa data to 2012-01-10, a obecna 2012-05-31, będziemy mieli 0 lat, 5 miesięcy i 21 dni. To działa dobrze, ale co jeśli pierwotna data przypada na 31 dnia miesiąca, a data końcowa na 28 lutego?

Kiedy pisałem to pytanie, samo pytanie ewoluowało, więc lepiej wyjaśnię:

Jaki byłby najlepszy (najbardziej logiczny sposób) zdefiniowanie miesięcy, a następnie, jak znaleźć czas różnicy w latach, miesiącach i dniach?