You can try using the PECL geoip package: http://php.ca/manual/en/book.geoip.php
This would let you retrieve information from the ip, and you can use that to feed into timezone fetch for the country and region (one of the functions in the package do that). That timezone can in turn be used with DateTimezone objects.