Countdown für Ereignisse
Verfasst: Mittwoch 17. November 2021, 15:24
Hallo Python Forum
Ich würde gerne wissen wie mein (Ereignis Countdown) nach Ablauf des Ereignistages (fixer Tag) wieder von neuem den Countdown beginnt.
Beispiel: fixer Tag ist 16.11. im Jahr.
Sobald der 16.11. um einen Tag überschritten ist bleibt der Text "Das Ereignis ist nun vorbei bye, bye, bis zum n\xc3\xa4chsten Ereignis"
und wechselt erst bei Jahresbeginn im nächsten Jahr auf den richtigen Countdown Ablauf (wieviel Tage noch verbleiben bis zum 16.11.).
Wenn ich jetzt aber eine ( + 1,) einfüge (ereignis = datetime(now.year + 1, 11, 16))
dann funktioniert der Countdown Ablauf wieder richtig, aber leider nur bis zum Jahreswechsel dann zählt er durch die eingefügte ( + 1,)
nochmals 365 Tage hinzu.
Also müsste ich jetzt die eingefügte ( + 1,) wieder entfernen damit der Countdown wieder passt.
was kann man nach dieser zeile einfügen, damit der Countdown wieder von neuem beginnt?
elif final < 0:
return "Das Ereignis ist nun vorbei bye, bye, bis zum n\xc3\xa4chsten Ereignis"
Würde mich sehr über eine Lösung meines Problems freuen
Ich bedanke mich jetzt schon Herzlich für eure Hilfe.
PS.: CountdownToEreignis.py benutze ich auf meiner TV-Box
from Converter import Converter
from Components.Element import cached
from datetime import datetime, time
class CountdownToEreignis(Converter, object):
DAYS = 0
TIME = 1
def __init__(self, type):
Converter.__init__(self, type)
if type == "Ereignis":
self.type = self.DAYS
else:
self.type = self.TIME
@cached
def getText(self):
time = self.source.time
if time is None:
return ""
if self.type == self.DAYS:
return self.calculate()
elif self.type == self.TIME:
return self.calculate(False)
else:
return "???"
text = property(getText)
def calculate(self,what=True):
now = datetime.now()
if what:
ereignis = datetime(now.year + 1, 11, 16)
delta = ereignis - now
final = delta.days
if final > 0:
return str(final) + " Tage sind es noch bis zum Ereignis"
elif final == 0:
return "Heute findet das Ereignis statt!"
elif final < 0:
return "Das Ereignis ist nun vorbei bye, bye, bis zum n\xc3\xa4chsten Ereignis"
def dateDiffInSeconds(self,date1, date2):
timedelta = date2 - date1
return timedelta.days * 24 * 3600 + timedelta.seconds
def daysHoursMinutesSecondsFromSeconds(self,seconds):
(minutes, seconds) = divmod(seconds, 60)
(hours, minutes) = divmod(minutes, 60)
(days, hours) = divmod(hours, 24)
return (days, hours, minutes, seconds)
Ich würde gerne wissen wie mein (Ereignis Countdown) nach Ablauf des Ereignistages (fixer Tag) wieder von neuem den Countdown beginnt.
Beispiel: fixer Tag ist 16.11. im Jahr.
Sobald der 16.11. um einen Tag überschritten ist bleibt der Text "Das Ereignis ist nun vorbei bye, bye, bis zum n\xc3\xa4chsten Ereignis"
und wechselt erst bei Jahresbeginn im nächsten Jahr auf den richtigen Countdown Ablauf (wieviel Tage noch verbleiben bis zum 16.11.).
Wenn ich jetzt aber eine ( + 1,) einfüge (ereignis = datetime(now.year + 1, 11, 16))
dann funktioniert der Countdown Ablauf wieder richtig, aber leider nur bis zum Jahreswechsel dann zählt er durch die eingefügte ( + 1,)
nochmals 365 Tage hinzu.
Also müsste ich jetzt die eingefügte ( + 1,) wieder entfernen damit der Countdown wieder passt.
was kann man nach dieser zeile einfügen, damit der Countdown wieder von neuem beginnt?
elif final < 0:
return "Das Ereignis ist nun vorbei bye, bye, bis zum n\xc3\xa4chsten Ereignis"
Würde mich sehr über eine Lösung meines Problems freuen
Ich bedanke mich jetzt schon Herzlich für eure Hilfe.
PS.: CountdownToEreignis.py benutze ich auf meiner TV-Box
from Converter import Converter
from Components.Element import cached
from datetime import datetime, time
class CountdownToEreignis(Converter, object):
DAYS = 0
TIME = 1
def __init__(self, type):
Converter.__init__(self, type)
if type == "Ereignis":
self.type = self.DAYS
else:
self.type = self.TIME
@cached
def getText(self):
time = self.source.time
if time is None:
return ""
if self.type == self.DAYS:
return self.calculate()
elif self.type == self.TIME:
return self.calculate(False)
else:
return "???"
text = property(getText)
def calculate(self,what=True):
now = datetime.now()
if what:
ereignis = datetime(now.year + 1, 11, 16)
delta = ereignis - now
final = delta.days
if final > 0:
return str(final) + " Tage sind es noch bis zum Ereignis"
elif final == 0:
return "Heute findet das Ereignis statt!"
elif final < 0:
return "Das Ereignis ist nun vorbei bye, bye, bis zum n\xc3\xa4chsten Ereignis"
def dateDiffInSeconds(self,date1, date2):
timedelta = date2 - date1
return timedelta.days * 24 * 3600 + timedelta.seconds
def daysHoursMinutesSecondsFromSeconds(self,seconds):
(minutes, seconds) = divmod(seconds, 60)
(hours, minutes) = divmod(minutes, 60)
(days, hours) = divmod(hours, 24)
return (days, hours, minutes, seconds)