1. Geolocate the IP, show the local time and mark it with a timezone identifier/city
2. If geolocation data is not available for IP, show UTC time celarly marking it as such
3. Put a button on the side of the clock to acquire the user's coordinates if a GPS is available, mark the timezone as GPS-determined
4. If GPS is not available and user pushes button, use the JS new Date().getTimezoneOffset(), mark the timezone as OS-determined
There are corner cases where this will not work, but this is good enough for 99% of the users.
The user is behind VPN/Proxy? If he cares about the correct local time, he'll push the button.
The user has no GPS and wrong OS timezone? Too bad.