Die Aufteilung in Jahre hab ich direkt raus gelassen um so Dingen wie Schaltjahren usw. aus dem Weg zu gehen.
Code: Alles auswählen
from operator import mul
from datetime import datetime, timedelta
def extract_timeparts(dt):
"""
extract the values for days, hours, seconds, milli- and microseconds
as dict from a timedelta like object
"""
infos = {"days" : dt.days,
"milliseconds" : dt.microseconds / 1000,
"microseconds" : dt.microseconds % 1000}
factors = [60, 60, 1]
rest = dt.seconds
for i, name in enumerate(("hours", "minutes", "seconds")):
factor = reduce(mul, factors[i:])
infos[name] = rest / factor
rest -= (infos[name] * factor)
return infos
print ("Dieses Jahr hat noch %(days)s Tage, %(hours)s Stunden, "
"%(minutes)s Minuten, %(seconds)s Sekunden, %(milliseconds)s "
"Millisekunden und %(microseconds)s Millionstelsekunden."
) % extract_timeparts(datetime(2010, 1, 1) - datetime.now())
Vielleicht gibt es auch schon was fertiges in den builtins was ich bisher nicht kenne.