Каков наилучший способ собрать часовой пояс пользователя без явного запроса пользователя? - PullRequest
4 голосов
/ 30 июля 2010

Для моего проекта (веб-приложение и приложение для iPhone) мне нужно собрать часовой пояс пользователя, чтобы показать ему / ей соответствующие данные. Некоторые из возможных вариантов, о которых я могу подумать:

1Получение его с использованием IP-адреса пользователя (но что, если пользователь находится за прокси-сервером)2. Отправка его с параметрами запроса (но для этого потребуется приложить дополнительный параметр к запросу. Или может собирать один раз для сеанса)3. Проходя через куки (имеет то же значение, что и установка в параметрах)4. На основании почтового индекса пользователя, который я собираю во время регистрации, но незарегистрированный пользователь, который может просматривать приложение, не сможет увидеть соответствующие данные.

Так что в целом каждый подход, о котором я могу подумать, имеет один или несколько недостатков.Я просто хочу знать, какие существуют другие подходы, и какой из них лучше всего использовать в таком случае, когда пользовательский опыт не затрагивается, и пользователю явно не задают вопрос о его / ее часовом поясе. Также подход должен применяться как к сети, так и к iPhone.

Ответы [ 5 ]

2 голосов
/ 30 июля 2010

Для iPhone SDK о получении часового пояса ... Это позволит вам получить все, что вам нужно, и настроить его для перехода на летнее время.

NSTimeZone *systimeZone = [NSTimeZone systemTimeZone];
NSString *timeZoneString = [systimeZone localizedName:NSTimeZoneNameStyleShortStandard locale:currentLocale];
if([systimeZone isDaylightSavingTimeForDate:[NSDate date]]){
    timeZoneString = [systimeZone localizedName:NSTimeZoneNameStyleShortDaylightSaving locale:currentLocale];
}

На яблоках .

есть отличная информация об объектах TimeZone.
1 голос
/ 30 июля 2010

С JavaScript вы можете использовать new Date().getTimezoneOffset(), если это поможет.Согласно MDC , это даст вам компенсацию за минуты ... В моем случае (Финляндия) -180.

0 голосов
/ 30 июля 2010

Я мало что знаю о разработке для iPhone, но в API может быть что-то, что позволит вам получить доступ к настройкам пользователя или даже к отображаемому им текущему времени.

Что касается Интернета вВ общем, этот вопрос широко освещен в этом вопросе .

0 голосов
/ 30 июля 2010

Для Интернета вы должны иметь возможность получить его из браузера пользователя. Для iPhone я бы представил API для этого. По крайней мере, ISTR показывает, что мой iPhone показывает правильное местное время, когда я меняю часовые пояса (я полагаю, он получает эту информацию из локальной вышки сотовой связи при подключении к ней).

0 голосов
/ 30 июля 2010

Я собираю текущее время пользователя с помощью JavaScript и отправляю его по первому запросу на весь сеанс.

Вы должны будете учесть отклонения (возможно, + - 15 минут), но должна быть возможность достаточно точно определить часовой пояс.

Следующее лучшее, вероятно, действительно работаетIP пользователя через сервис геолокации, чтобы узнать страну.Однако для правильного выполнения этой операции вам потребуется вести карту страны-часового пояса, и у вас будут проблемы со странами с несколькими часовыми поясами, такими как США или Россия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...