Работа со временем в клиент-серверном приложении - PullRequest
0 голосов
/ 14 февраля 2012

Для приложения чата для iPhone, над которым я работаю, я хочу знать, как справиться со всеми проблемами с часовыми поясами. Я имею в виду, как это сделать, когда client1 отправляет сообщение client2, они оба видят правильное время (дату) рядом с сообщением.

Пока это то, что мне нужно сделать:

  1. Клиент1 отправляет сообщение на сервер, клиент1 использует свое местное время для представления даты рядом с сообщением.
  2. Сервер (c #) получает сообщение и сохраняет его в базе данных, также он сохраняет текущее время рядом с сообщением с помощью DateTime.UtcNow.
  3. При входе клиента client2 он получает сообщение от сервера с временем UTC и переводит его в местное время.

Это способ сделать это? Как лучше всего отправить дату с сервера на клиент? На сервере дата сохраняется в базе данных как DateTime объект, в какой формат ее можно преобразовать для отправки клиенту?

1 Ответ

2 голосов
/ 14 февраля 2012

У вас есть несколько вариантов здесь, в зависимости от того, насколько точным должно быть указанное время:

  1. Если оно должно быть действительно точным, я бы полагался только на серверное время.Когда вы отправили сообщение на сервер с client1, пусть сервер вернет время UTC, которое оно связало с сообщением в своем ответе.Поэтому я отправил сообщение «привет» и получил 200 OK с временем UTC в теле ответа или в расширенном заголовке или что-то еще.Затем client1 показывает это время (преобразованное в местное время) и client2 одновременно (преобразованное в местное время).
  2. Если точность не так важна, проще просто отправить сообщение с client1 и затем использовать вашместное текущее время.Вы все еще можете использовать UTC на сервере, и клиент1 будет использовать это время, но в этом случае вам не нужно смотреть на что-либо в ответе на сообщение клиента 1.

С точки зрения дат отправкивзад и вперед, ознакомьтесь с документацией NSDateFormatter .Вы можете использовать формат, который он может легко потреблять, или делать все, что проще на сервере, и использовать пользовательское свойство dateFormat в формататоре, чтобы анализировать, как вам угодно.

...