Google maps geo-coding (get lat lng from address) now comes with a cost. You can do a limited number of free lookups per month (I think it’s 100,000 but don’t quote me!), and with your API key can do the lookup in one line: -
https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY
Note just the suburb/city + country will be enough for your circumstance.
The Google sites / Stack Overflow have many examples of implementation (I’m pretty sure you don’t just assign the URL to a variable, you need to get the site).
You will also want to harden access to your API key, IP protect it by putting your webpage’s host IP as the only allowable client IP.
With the returned lat lng you’ll need another lookup (which I don’t know of) to get the timezone.
There is also to possibility of using the IP of your user, using something like this:-
https://ipgeolocation.io/timezone-api.html
https://www.iplocate.com/en/
https://ipapi.co/
And some of those sites seem to offer free API, so do your research!
Of course if your user runs a VPN it’ll be a bit weird for them!!
As both these solutions are 1 or 2 lines of PHP you don’t need a CakePHP plugin, just directly call the code yourself.