DST is way more complicated than it should be it’s based on location, not every country uses it and even the offsets and transitions-times are not the same…
The best thing I found was the TzCfg library mentioned above. It works mostly offline and just synchonises the timezone-data every now and then.
Complicated for sure. I took some code that @rickkas7 made and created a DST function that works for the US. Not as robust as TZCfg but is completely local.