Check out the Maxmind GeoLite2 database. It contains details about the continent/country/city and lat/lon for most IP addresses including the time_zone as you can see below.
I describe how to compile the PHP extension, and how to use the mmdb databases in PHP here:
Intro to Maxmind GeoLite2 with Kohana PHP
