Кажется, я упускаю что-то очевидное. Когда я запрашиваю ответ JSON от службы OData, я получаю другой результат для свойств DateTime, чем когда я запрашиваю XML. В качестве примера я буду использовать канал OData NerdDinner.
JSON:
http://www.nerddinner.com/Services/OData.svc/Dinners(1)?$format=json
"EventDate": "\/Date(1235764800000)\/"
XML:
http://www.nerddinner.com/Services/OData.svc/Dinners(1)
2009-02-27T20:00:00
Когда я делаю предупреждение (новая дата (1235764800000)), я получаю следующий результат:
Я также получаю результат в 8 вечера, когда выполняю тот же запрос с LINQPad. Почему в результате JSON указан неверный часовой пояс? Кажется, предполагается, что ответ находится в GMT. Должен ли я обрабатывать это на клиенте (через javascript) или это то, что я могу установить на сервере?
Я использую jQuery на клиенте, а службы данных WCF (и Entity Framework) на сервере.
Обновление:
Я использую Datejs на стороне клиента для обработки UTC форматирование даты и времени. Мне интересно, правильный ли это способ решить эту проблему.
function getDateString(jsonDate) {
if (jsonDate == undefined) {
return "";
}
var utcTime = parseInt(jsonDate.substr(6));
var date = new Date(utcTime);
var minutesOffset = date.getTimezoneOffset();
return date.addMinutes(minutesOffset).toString("M/d/yyyy h:mm tt");
}