Das machte mich etwas irre, bis ich das Problem eingrenzen konnte.
Ich habe einen Status Handler im Plugin. Eigentlich ziemlich simpel:
class StatusHandler : public cStatus {
public:
StatusHandler();
~StatusHandler() override;
protected:
void TimerChange(const cTimer *Timer, eTimerChange Change) override;
};
void StatusHandler::TimerChange(const cTimer* Timer, eTimerChange Change) {
if (Change == eTimerChange::tcAdd) {
fprintf(stderr, "Start Timer day, starttime = %ld, %ld\n", Timer->Day(), Timer->StartTime());
fflush(stderr);
} else if (Change == eTimerChange::tcDel) {
fprintf(stderr, "Stop Timer day, starttime = %ld, %ld\n", Timer->Day(), Timer->StartTime());
fflush(stderr);
}
}
Mit einer leeren Timers.conf erstelle ich mit dem roten Button einen Timer. Wechsel in das Timer-Menu und lösche den Timer mit dem gelben Button.
Die Ausgabe aus dem StatusHandler (die Timestamps habe ich schon konvertiert):
Start Timer day, starttime = 1777932000, 1777993980
2026-05-04 22:00:00.000000 +00:00, 2026-05-05 15:13:00.000000 +00:00
Stop Timer day, starttime = 1778018400, 1778080380
2026-05-05 22:00:00.000000 +00:00, 2026-05-06 15:13:00.000000 +00:00
Es gibt nach dem Add nur einen einzigen Timer und genau den lösche ich dann auch. Aber warum unterscheiden sich beide Ausgaben genau um einen Tag? ![]()
Probleme mit der Zeitzone hätte ich noch verstanden, aber 24 Stunden Differenz ist mir völlig unklar.
Woher kann das kommen? Ich kann die timestamps im Falle tcDel manuell um 24 Stunden schieben, aber so richtig überzeugend ist das nicht.
Edit:
Ich habe die Ausgaben in das Status-Plugin gepackt und alle Plugins, die irgendwas mit Timern machen disabled.
Und auch da ist das Delete um 24 Stunden verschoben. Ein Mysterium....