Angular ui bootstrap TimePicker показывает разное время в разных браузерах

Я использую 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 (правильно).

Итак, мой вопрос: что мне делать, чтобы добиться одинакового значения в хронометрах в разных браузерах? Спасибо.


person Vitone    schedule 24.04.2015    source источник
comment
Вам нужно передать информацию о часовом поясе 2015-05-23T20:00:00+03:00, чтобы получить правильный рендеринг. Дополнительные сведения см. в разделе вопрос о часовом поясе javascript.   -  person Pekka    schedule 24.04.2015
comment
@Pekka, ты прав, нужно добавить информацию о часовом поясе. Поэтому на стороне сервера я добавил свойство, которое возвращает NotificationSendingTime.Value.ToLocalTime(), и все браузеры отображают одинаковые значения. Как я могу настроить свой Web-Api для сериализации DateTime с информацией о часовом поясе?   -  person Vitone    schedule 24.04.2015