Я считаю, что здесь нет ничего очевидного. Когда я запрашиваю ответ JSON от службы OData, у меня получается другой результат для свойств DateTime, чем при выполнении запроса XML. В качестве примера я использую фид NDrdDinner OData.
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)), я получаю этот результат:
Я также получаю результат 8PM, когда я запускаю тот же запрос с LINQPad. Почему часовой пояс неправильный в результате JSON? Предполагается, что ответ находится в GMT. Должен ли я обрабатывать это на клиенте (через javascript) или это что-то, что я могу установить на сервере?
Я использую jQuery для клиента и служб данных WCF (и Entity Framework) на сервере.
Update:
Я использую 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");
}