Yes, it should work, but I guess it depends on what you want. Do you want to know the official offset for your timezone, or do you want the value difference as adjusted for daylight savings?

Here is another program that Bruno provided to me, and it does the math using the ISO 8601 formats.

data work.utc_orig;
/** E8601LZ reads a UTC value and converts to a local time **/
currentTime = time();

timeTC = put( currentTime, e8601LZ.);
timeLocal = put( currentTime, e8601TZ.);

timeTC_SAS = input( timeTC, e8601LZ.);
timeLocal_SAS = input( timeLocal, e8601TZ.);

utcOffsetCalc = timeLocal_SAS - timeTC_SAS;
utcOffsetFunc = gmtoff();

putlog (_all_) (=/);

format
timeTC_SAS timeLocal_SAS time12.3
;
run;