Hallo,
ich möchte aus einem timedelta Jahre, Monate, Minuten, ... extrahieren. Leider habe ich im Internet nichts dazu gefunden (außer strptime, aber das ist ja nicht das, was ich möchte. Vielen Dank für Eure Hilfe!
Jahre, Monate, Minute, ... aus timedelta extrahieren
Hast du dir mal die Attribute vom timedelta angeschaut? Aus denen musst du das errechnen.
Dass es da nur "Tage" gibt, hat durchaus einen Sinn, weil es die einzig Konstante Einheit ist. Monate haben, ebenso wie Jahre, eine unterschiedliche Anzahl von Tagen.
Dass es da nur "Tage" gibt, hat durchaus einen Sinn, weil es die einzig Konstante Einheit ist. Monate haben, ebenso wie Jahre, eine unterschiedliche Anzahl von Tagen.
Du kannst doch einfach die Attribute vom timedelta-Objekt ansprechen?
https://docs.python.org/2/library/datet ... ta-objects
https://docs.python.org/2/library/datet ... ta-objects
In einigen kaufmännischen Zusammenhängen (z.B. bei der Zinsrechnung) ist es so gelöst, dass einfach alle Monate 30 Tage haben und das Jahr demnach 360 Tage hat. Das ist ungenau, aber einfacher in der Handhabung. Wie viel Ungenauigkeit für den Anwendungsfall hier in Ordnung geht, müsste man sich halt selbst überlegen, falls es keine Vorgabe dazu gibt...
Also mein Anwendungsfall ist eine Stoppuhr, bei welchem die startzeit gespeichert wird. Wenn die Stopuhr dann beendet wird, soll die Zeitdifferenz zwischen dem gespeicherten und der jetzigen zeit berechnet werden. Da es sich um einen Sprachassistenten handelt, benötige ich Monate, Jahre, ...
Ich kenne dateutil nicht, aber ich wuerde sparrows Vorschlag da folgen, und mir das an deiner Stelle anschauen.
Ansonsten rechnet man solche umschlagenden Werte zB so:
ZB mit start = 11 und ende = 5 bekommst du die erwarteten 6 Monate Unterschied.
Ansonsten rechnet man solche umschlagenden Werte zB so:
Code: Alles auswählen
monate = (ende + 12 - start) % 12
Ich kenne dateutil nicht, aber ich wuerde sparrows Vorschlag da folgen, und mir das an deiner Stelle anschauen.
Ansonsten rechnet man solche umschlagenden Werte zB so:
ZB mit start = 11 und ende = 5 bekommst du die erwarteten 6 Monate Unterschied.
Ansonsten rechnet man solche umschlagenden Werte zB so:
Code: Alles auswählen
monate = (ende + 12 - start) % 12