Полагаю, мне здесь не хватает чего-то очевидного. Когда я запрашиваю ответ 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)
<d:EventDate m:type="Edm.DateTime">2009-02-27T20:00:00</d:EventDate>
Когда я делаю предупреждение (новая дата (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");
}