2015-07-06 5 views
0

У меня есть мобильное приложение, которое аутентифицирует пользователя по номеру телефона (аналогично знаку Whatsapp в процессе).Как получить UTC смещение с номера телефона в C#

После того, как пользователь вошел в систему, он может создавать записи TODO. Когда он создает заметку, он также заполняет дату.

В БД я хочу нормализовать эту дату на UTC.
Так, например, если пользователь заполнил дату: 06/07/2015 17:00:00
И в UTC смещение в его стране +3
Тогда 06/07/2015 14: 00:00 будет сохранен в БД.

Для этого мне нужно знать смещение UTC страны пользователя.

Когда пользователь зарегистрировал только две вещи, которые он Обеспечиваются:

  • код страны
  • номер телефона

Это не достаточно, чтобы знать UTC смещение, так как пользователь, который вошел код страны США может по-прежнему находиться в нескольких разных часовых поясах.

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

Как это можно решить? (Как и другие приложения, такие как Viber, Line и Whatsapp обрабатывать этот сценарий?)

+0

Почему вы не можете просто получить часовой пояс от самого устройства? –

+0

Вы не можете, особенно с мобильными номерами. Мобильные номера * не * назначаются географически. Кроме того, переносимость номера означает, что вы даже не можете обнаружить несущую по номеру –

+0

Мобильные приложения используют информацию о часовом поясе и/или местоположение устройства. Они не пытаются угадать номер. –

ответ

1

Я хотел бы перефразировать ваш вопрос в этом:

Как я могу получить часовой пояс из номера телефона?

И ответ, нет, вы не можете получить часовой пояс только с номером телефона (включая код страны).

Что бы я сделал, это посмотреть на клиента, который отправит вам полный DateTimeOffset, который включает часовой пояс или DateTime с какой-то «позицией», и вы пытаетесь вызвать его самостоятельно на сервере.

+4

Вот объяснение XKCD - http://xkcd.com/1129/ - если просто «нет» недостаточно :) –

+0

@AlexeiLevenkov, всегда есть соответствующий XKCD ... –

+0

Я пошел не так, как с этим дизайном. Лучший подход заключается в том, чтобы делать что-то на стороне клиента, как я писал в ответ. –

0

Как сказал Алекси, самое лучшее, что нужно сделать, это никогда не обрабатывать конвертирование UTC на стороне сервера. Вместо этого клиент отправит дату уже в UTC. Преобразование в/из UTC всегда будет выполняться на стороне клиента в соответствии с временным смещением, определенным в ОС (это означает локаль). Сервер получает только даты UTC от клиента.

 Смежные вопросы

  • Нет связанных вопросов^_^