The true problem here is using individual floating reference time instead of fixed or shared reference times.
Programming should always use Epoch or UTC+0 internally. All translation to local time would be just that, a translation.
The majority of similar scheduling bugs is due to not being explicit with what your reference time is. For automated background tasks that should always be absolute time. It’s only when you’re scheduling in reference to events that run at times that are fixed to their local timezones that you should be referring to that kind of floating reference, and then you should link all the references together so everything connected to the event pulls the same timezone reference, etc
The true problem here is using individual floating reference time instead of fixed or shared reference times.
Programming should always use Epoch or UTC+0 internally. All translation to local time would be just that, a translation.
The majority of similar scheduling bugs is due to not being explicit with what your reference time is. For automated background tasks that should always be absolute time. It’s only when you’re scheduling in reference to events that run at times that are fixed to their local timezones that you should be referring to that kind of floating reference, and then you should link all the references together so everything connected to the event pulls the same timezone reference, etc