У меня есть приложение javascript, которое получает данные из ASP.NET WebService в формате JSON.В моем приложении много манипуляций с датами, которые оно также получает от WebService.
WebService сохраняет все даты в часовом поясе EST и отправляет их в таком формате:
{"Date":"\/Date(1319205600000+0300)\/"}
в мое приложение javascript.
На стороне клиента я должен также отобразить все датыв часовом поясе EST, независимо от часового пояса браузера.Поэтому, если я получу от сервера представление:
10/21/2011 10:00
, я должен отобразить для пользователя точно такое же время.
Итак, для преобразования дат я делаю что-то вроде этого:
function convert_date(millisec) {
var date = new Date(millisec),
local_offset = date.getTimezoneOffset(),
server_offset = -5 * 60, //EST offset
diff = (local_offset + server_offset) * 60000;
return new Date(millisec + diff);
}
Но дело в том, что server_offset
не всегда должно быть -5.Это может быть -4 в зависимости от значения летнего времени.Я попытался сделать server_offset = (date.isDST() ? -4 : -5) * 60
вместо этого, но я не нашел никакого решения для захвата isDST()
, которое прекрасно работает для всех часовых поясов локального клиента.Большинство из них отлично работают для часового пояса этого локального браузера, который имеет то же значение DST, что и часовой пояс EST, но не работает, например, в случае часового пояса GMT + 5: 30.
Так есть ли способ определить,DST будет применяться для какой-то конкретной даты в часовом поясе EST из JavaScript?
Или, может быть, я что-то пропустил?