Look great! 👍 😊
As for UTC to local time ... I haven't done anything with that on an Arduino yet.
As far as I can see, most GPS libraries provide the data in a structure and you'd need to add o subtract a certain number of hours to get your local time.
I'm sure you already know this. Not to mention potential daylight savings (another disaster).
When adding hours, you'll of course have to watch the 24 hour limit of a day, which could be easy if the date doesn't matter.
Assuming you have to add hours to the UTC time:
Just increase hours + offset, if the sum > 24, then subtract 24.
If the date is important, then "if sum>24", then day has to increase by one.
Now this is where it gets tricky if the date is needed: you'll have to figure out when the month or year has to increase as well.
The opposite for when you are subtracting hours of course.
Personally I'd exploring using timestamps.
One method uses one day represented by "1". So "1" = 24 hours.
In such a case, changing time is easier (make sure the used variables are all "float"); you can just add or subtract the number of hours as fractions of 24.
So +6 hours = + 6/24 = + 1/4.
You'd have to convert it back to the time structure of course to be able to "read" the result.
It may also be represented as the number of seconds since 0:00 January 1st, 1970 (Unix Timestamp).
Here again increasing/decreasing is simple: just add (subtract) the number of hours expressed in seconds.
here you'd also need to convert it back to the time structure.
I'm not sure if one or the other time library supports this.
Maybe you'll can code in one of the RTC (real time clock) libraries?