I don’t think the API returns different results depending on the device. If you inspect the API result directly, does it show the correct value?
There is a known bug in Safari with timezones, it is possible that this bug is causing the error. You need to do some more debugging to see where it goes wrong. We already know it is not in the date formatters, you figured out the
TZdiff.value was already wrong. In the code for it you use TZhours and TZsplit, did you validate these values?