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

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

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

4
Hitesh Manchanda 30 Июл 2010 в 16:01

5 ответов

Лучший ответ

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

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

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

0
Pekka 30 Июл 2010 в 12:05

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

0
TMN 30 Июл 2010 в 12:26

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

1
AKX 30 Июл 2010 в 12:52

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

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

На сайте яблочные документы.

2
Jesse Wolgamott 30 Июл 2010 в 14:58

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

Что касается Интернета в целом, он подробно освещен в этом вопросе .

0
Community 23 Май 2017 в 11:57