Die C-Funktion localtime() rechnet den Time-Wert (1.1.1970) unter Berücksichtigung von QUTCOFFSET in eine lokale Zeit um.
Dies ist deshalb notwendig, da stat() den um QUTCOFFSET korrigierten Zeitwert (GMT-Zeit) liefert.

Mit ADDDUR kommt man nur dann zurecht, wenn man eben selber QUTCOFFSET berücksichtigt.

Neuerdings (ab V5R3) wird allerdings auch eine USER-Zeit über eine Umgebungsvariable ermöglicht, deren Wert von QUTCOFFSET abweichen kann.
stat() verwendet diesen Wert.

Also wäre localtime() auf jeden Fall die bessere Wahl.