Как уже отмечали другие, на самом деле не существует хорошего способа сделать это еще больше, поэтому, если вы попытаетесь угадать, основываясь только на стране, есть очень хороший шанс, что данная страна может находиться в нескольких часовых поясах.
Поскольку ASP.NET находится в списке тегов, я собираюсь выйти на конечность и предположить, что вы пишете какое-то веб-приложение. В этой ситуации лучшим и, возможно, самым надежным вариантом будет просто указать конкретный пользовательский часовой пояс, в котором он находится. Как только вы узнаете часовой пояс, назначенный пользователем, вы можете делать с ним практически все, что захотите.
Следующим вариантом является тот, на который Джон Сондерс ссылается в своем посте, и который использует службу, такую как EarthTools , для поиска местоположения и получения информации о часовом поясе. Единственный улов здесь заключается в том, что вам обычно нужно иметь возможность добраться хотя бы до города и страны, чтобы отфильтровать результаты, и вы должны быть осторожны, поскольку в одной и той же стране может быть несколько городов с одинаковым названием.
Наконец, если вы готовы принять результаты, которые иногда могут быть неверными, но у вас нет хорошего способа дать пользователю возможность указать, где они находятся, вы можете попробовать выполнить обратный просмотр IP, чтобы попытаться угадать где находится компьютер пользователя. Затем вы можете передать эту информацию вышеупомянутому EarthTools , чтобы получить информацию о часовом поясе. Однако на самом деле нет способа гарантировать, что это точно.
И последнее, на что следует обратить внимание: если вы находитесь в корпоративной глобальной сети, вы можете гораздо проще осуществить обратный просмотр IP, поскольку у вас есть доступ к макету глобальной сети, и вы можете просто краткий список того, откуда будет поступать данный IP-адрес.