converter tempo difftime para anos, meses e dias

Como posso converter com precisão os produtos (unidades em dias) dodifftime abaixo para anos, meses e dias?

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

Isso faz anos e dias, mas como eu poderia incluir meses?

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"))

Eu também não sei como definir meses. Seriam 4 semanas consideradas um mês ou a passagem do mesmo dia do mês. Então, para a definição posterior de um mês, se a data inicial fosse 2012-01-10 e a atual 2012-05-31, então teríamos 0 anos, 5 meses e 21 dias. Isso funciona bem, mas e se a data original estivesse no dia 31 do mês e a data final fosse em 28 de fevereiro, isso seria considerado um mês?

Quando escrevi esta pergunta, a questão em si evoluiu, então é melhor esclarecer:

Qual seria a melhor (abordagem mais lógica) para definir meses e, em seguida, como encontrar o tempo de diferença em anos, meses e dias?

questionAnswers(4)

yourAnswerToTheQuestion