Zeitdifferenz in Jahre, Monate und Tage umrechnen

9

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

%Vor%

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

%Vor%

Ich bin mir nicht sicher, wie man auch Monate definiert. Würden 4 Wochen als ein Monat oder der Ablauf desselben Monats betrachtet werden. Also für die spätere Definition eines Monats, wenn das Anfangsdatum 2012-01-10 und das aktuelle 2012-05-31 wäre, dann hätten wir 0 Jahre, 5 Monate und 21 Tage. Das funktioniert gut, aber was, wenn das ursprüngliche Datum am 31. des Monats war und das Enddatum am 28. Februar war, würde dies als ein Monat betrachtet werden?

Als ich diese Frage schrieb, entwickelte sich die Frage selbst, also sollte ich besser klarstellen:

Was wäre der beste (logischste Ansatz), Monate zu definieren und dann die Diff-Zeit in Jahren, Monaten und Tagen zu finden?

    
Tyler Rinker 31.05.2012, 15:23
quelle

3 Antworten

4

Wenn Sie etwas wie

tun %Vor%

Es wird vorausgesetzt, dass Sie wissen müssen, was someDate ist. In diesem Fall können Sie dies in ein POSIXct-Klassenobjekt konvertieren, das Ihnen die Möglichkeit gibt, zeitliche Informationen direkt zu extrahieren (Paket chron bietet auch mehr Methoden). Zum Beispiel

%Vor%

Dies wird Ihr gewünschtes Datumsobjekt zurückgeben. Wenn Sie eine Zeitzone tz haben, die in die Zeitdifferenz einfließt, können Sie diese auch direkt an den Parameter tz in as.POSIXct übergeben.

Jetzt, da Sie Ihr Date-Objekt haben, können Sie Dinge wie months(.) ausführen und wenn Sie einen Chron haben, können Sie years(.) und days(.) (gibt geordneten Faktor zurück).

Von hier aus können Sie den Unterschied zwischen Jahren, Monaten und Tagen einfacher berechnen (indem Sie in entsprechende numerische Darstellungen konvertieren). Natürlich wird someDate in POSIXct konvertiert.

BEARBEITEN: Beim zweiten Gedanken gibt months(.) eine Zeichendarstellung des Monats zurück, so dass sie möglicherweise nicht effizient ist. Zumindest erfordert es eine kleine Verarbeitung (nicht zu schwierig), um eine numerische Darstellung zu geben.

    
Bryan Goodrich 31.05.2012, 18:12
quelle
0

Sie können nicht einfach eine Monatszeit in einen Monat umrechnen, da die Definition von Monaten von der absoluten Zeit abhängt, zu der die Difftime begonnen hat.

Sie müssen das Startdatum oder das Enddatum kennen, um die Anzahl der Monate genau zu bestimmen.

Sie könnten dann z. B. die Anzahl der Monate im ersten Jahr Ihrer Zeitspanne, die Anzahl der Monate in der letzten Zeit der Zeitspanne und die Anzahl der Jahre zwischen den Zeiten 12 berechnen.

    
mic_e 31.05.2012 15:29
quelle
0

Hmm. Ich denke, am sinnvollsten wäre es, die verschiedenen Einheiten selbst zu betrachten. Vergleiche also zuerst den Tag des Monats, vergleiche dann den Monat des Jahres und vergleiche dann das Jahr. An jedem Punkt können Sie einen Übertrag einführen, um negative Werte zu vermeiden.

Mit anderen Worten, arbeite nicht mit dem Produkt von difftime, aber recode dein eigenes difftime.

    
Fhnuzoag 31.05.2012 15:32
quelle

Tags und Links