Подтвердить что ты не робот

Почему фильтр даты Angular показывает неправильную дату?

Я использую поле ввода даты и форматирование выбранной даты в своем ui с помощью Angular. Но отформатированная дата всегда на 1 день меньше выбранной даты. Почему это и как я могу это исправить?

HTML:

<div ng-app="miniapp">
    <div>
    <label class="control-label" for="inputStart">Start Date:</label>
        <input type="date" id="inputStart" data-ng-model="startDate" /><br />
        Selected: <span>{{ startDate }}</span><br />
        fullDate: <span>{{ startDate | date:'fullDate' }}</span><br />
        mediumDate: <span>{{ startDate | date:'mediumDate' }}</span><br />
        MMMM d yyyy<span>{{ startDate | date:'MMMM d yyyy' }}</span>
    </div>    
</div>

JS:

var app = angular.module('miniapp', []);

У меня есть скрипка, которая демонстрирует проблему: http://jsfiddle.net/wittersworld/uY3s9/

EDIT: Я обновил скрипт рабочим решением: http://jsfiddle.net/wittersworld/uY3s9/2/

4b9b3361

Ответ 1

Это проблема с часовым поясом.

Если вы введете дату, например, 8 июня 2013 года, в свой сборщик дат, в полночь GMT. Если вы живете на западе Англии, скажем, в США, это 7 июня 2013 года.

Измените строку

{{ startDate | date:'fullDate' }}

к

{{ startDate | date:'medium' }}

чтобы увидеть время!