Я подозреваю, что это будет довольно сложно - я не знаю ни одного сервиса, который преобразует широту и долготу в имя часового пояса.
- Знание стандартного смещения и смещения DST не помогает, поскольку вы не будете знать, когда они применяются.
- Знание только страны (или даже страны и языка) не поможет, поскольку вы не будете знать регион.
- Даже с точным положением вам понадобится довольно точный сервис, чтобы сопоставить каждую возможную точку на земле с правильным часовым поясом
Лучше всего использовать эвристику, чтобы угадать, какой набор часовых поясов возможен, а затем спросить пользователя, какой это на самом деле. В настоящее время лучше всего использовать TimeZoneInfo
: когда Noda Time готово к использованию, это будет лучшим вариантом. (Надеюсь - это мой проект.)
Как только вы получите TimeZoneInfo
(или время Ноды ITimeZone
), все остальное относительно легко, используя DateTime
или DateTimeOffset
(или ZonedDateTime
в Нода) Начать правильно с часового пояса, что сложно.
РЕДАКТИРОВАТЬ: Я только что нашел этот вопрос , который предполагает, что Geonames может быть вашим другом. Я не удивлюсь, если он предоставит вам имя часового пояса Олсона, поэтому вам придется либо использовать конвертер для определения идентификатора часового пояса Windows, либо что-то подобное. (Дайте мне знать, если вы заинтересованы в использовании предварительной версии Noda; эта часть довольно стабильна AFAIK.)
Обратите внимание, что на ваш вопрос нельзя ответить однозначно из-за политических изменений. Иногда правительства вносят изменения в часовые пояса с очень небольшим предупреждением. Пару лет назад Аргентина за 11 дней уведомила , что, например, они не собираются соблюдать ТЛЧ. Кроме того, политические границы могут меняться со временем. По сути, вы должны надеяться, что этого не произойдет.