Смещение часового пояса данных JSON в веб-сервисе - PullRequest
0 голосов
/ 04 февраля 2012

У меня есть веб-служба ASP.NET MVC3 Restful, использующая сериализатор Microsoft JSON.Этот сервис возвращает данные, содержащие значение .NET DateTime.

Доступ к веб-службе осуществляется клиентом Silverlight, который использует библиотеку JSON Newtonsoft для десериализации возвращаемых данных.Получить в клиенте на пять часов больше, чем значение, отправленное из службы.Поскольку я нахожусь в Восточном часовом поясе (США), это, по-видимому, локальное время, отправляемое службой и интерпретируемое клиентом как GMT.

Мой вопрос таков: как можно устранить это несоответствие?Есть ли что-то в библиотеке Microsoft или Newtonsoft, которую я могу установить, чтобы справиться с этим.Нечто более элегантное, чем вычитание 5 часов от времени, полученного клиентом.

Спасибо

1 Ответ

1 голос
/ 04 февраля 2012

Сначала взгляните на этот вопрос (он касается Backbone.js, но относится и к вашей проблеме): Как обрабатывать даты в Backbone?

Некоторые библиотеки (например, Джексон ) по умолчанию сериализуют даты в UNIX-время. Как дата / время представлены в данных, отправленных с сервера? Если это не простое целое число, оно должно быть представлено с использованием ISO 8601 , которое всегда явно определяет часовой пояс (или Z для времени UTC).

Если время отправлено с сервера в текстовом виде, но без часового пояса, сервер неправильно его упорядочивает. Если время имеет правильный часовой пояс, но клиент его отбрасывает - это ошибка клиента.

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