public static function timezoneByCoordinates($lat, $lng)
{
$current = ['timezone' => null, 'distance' => 0];
$identifiers = DateTimeZone::listIdentifiers();
foreach ($identifiers as $identifier) {
$timezone = new DateTimeZone($identifier);
$location = $timezone->getLocation();
$point = ['lat' => $location['latitude'], 'lng' => $location['longitude']];
$distance = (int) Calculator::calculateDistance(compact('lat', 'lng'), $point);
if (!$current['distance'] || $distance < $current['distance']) {
$current = ['timezone' => $identifier, 'distance' => $distance];
}
}
return $current['timezone'];
}