Anche questo mi ha infastidito. Non c'è un modo molto pulito per ottenere l'intervallo di tempo in una particolare unità. Ciò è in parte dovuto alla dipendenza dall'intervallo di date delle unità.
relativedelta()
accetta un argomento per mesi. Ma quando pensi a quanto è lungo un mese, la risposta è "dipende". Detto questo, è tecnicamente impossibile convertire un relativedelta()
direttamente in giorni, senza sapere che giorni il delta atterra.
Ecco cosa ho fatto.
from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta
rd = relativedelta(years=3, months=7, days=19)
# I use 'now', but you may want to adjust your start and end range to a specific set of dates.
now = datetime.now()
# calculate the date difference from the relativedelta span
then = now - rd
# unlike normal timedelta 'then' is returned as a datetime
# subtracting two dates will give you a timedelta which contains the value you're looking for
diff = now - then
print diff.days
fonte
2017-04-20 13:34:35
dateutil non avere '' relativedelta' né timedelta' almeno non la versione Im usando come tale non capisco la tua domanda 'datetime.timedelta' ha una proprietà' .days' ... –
Sto usando questo https://labix.org/python-dateutil. '.days' restituirà solo il numero di giorni esclusi i mesi (vedi il mio esempio). –
Sembra improbabile che si possa estrarre il tempo totale in giorni da un timedelta poiché diversi mesi e anni hanno un diverso numero di giorni. Vale a dire. il numero di giorni dipende dal mese e dall'anno relativi (informazioni non disponibili per timedelta). – Alex