Я использую angularJS ui-bootstrap timepicker на стороне клиента и веб-API ASP MVC. на стороне сервера:
<timepicker ng-model="formData.NotificationSendingTime"></timepicker>
Клиент получает NotificationSendingTime от сервера в следующем формате: 2015-04-23T20:00:00.
Но разные браузеры показывают разное время: Internet Explorer показывает 20:00 (правильно), Chrome показывает 23:00 (неправильно). Насколько я понимаю, Chrome меняет время в соответствии с моим часовым поясом. Поэтому я написал фильтр angularJS для преобразования даты в формат iso:
filter('toIso', [function() {
return function(dateTime) {
var localDate = new Date(dateTime);
var localTime = localDate.getTime();
var localOffset = localDate.getTimezoneOffset() * 60000;
var isoDate = new Date(localTime + localOffset);
return isoDate.toISOString();
};
}]);
И используйте его в моем контроллере (настройка $scope.formData не показана в коде ниже):
value.NotificationSendingTime = $filter('toIso')(value.NotificationSendingTime);
После применения фильтра Internet Explorer показывает 17:00 (неправильно), Chrome показывает 20:00 (правильно).
Итак, мой вопрос: что мне делать, чтобы добиться одинакового значения в хронометрах в разных браузерах? Спасибо.
2015-05-23T20:00:00+03:00
, чтобы получить правильный рендеринг. Дополнительные сведения см. в разделе вопрос о часовом поясе javascript. - person Pekka   schedule 24.04.2015