Konvertieren Sie die Zwischenzeiten in Jahre, Monate und Tage

Wie kann ich die Produkte (Einheiten sind in Tagen) der genau umrechnen?difftime unten auf Jahre, Monate und Tage?

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

Das sind Jahre und Tage, aber wie könnte ich Monate einbeziehen?

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

Ich bin mir auch nicht sicher, wie ich Monate definieren soll. Würden 4 Wochen als ein Monat oder das Verstreichen des gleichen Monatstages angesehen. Für die spätere Definition eines Monats hätten wir also 0 Jahre, 5 Monate und 21 Tage, wenn das Anfangsdatum der 10.01.2012 und das aktuelle 31.05.2012 wäre. Dies funktioniert gut, aber was wäre, wenn das ursprüngliche Datum am 31. des Monats und das Enddatum am 28. Februar wäre?

Als ich diese Frage schrieb, entwickelte sich die Frage selbst, damit ich besser klarstellen kann:

Was wäre der beste (logischste) Ansatz, um Monate zu definieren, und wie kann dann die Differenzzeit in Jahren, Monaten und Tagen ermittelt werden?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage