Как установить правильный формат даты для редактируемой даты

Я получаю некоторые даты из postgres в формате, например:

"2000-11-30T14:00:00.000Z"

Я не могу использовать это в поле редактируемой даты на странице. Что-то типа:

 <a href="#" editable-date="employee.brthday"
     onbeforesave="updateField($data, 'brthday', employee)">
         {{employee.brthday || 'empty' | date:"dd/MM/yyyy" }}
 </a>

Эта дата (как указано выше) отображается нормально. Но когда я хочу отредактировать это поле, дата будет сброшена, и я получил это сообщение в консоли:

Error: [ngModel:datefmt] Expected `2000-12-05T14:00:00.000Z` to be a date http://errors.angularjs.org/1.3.0/ngModel/datefmt?p0=2000-12-05T14%3A00%3A00.000Z
    at http://localhost:8000/bower_components/angular/angular.js:80:12
    at Array.<anonymous> (http://localhost:8000/bower_components/angular/angular.js:19453:17)
    at Object.ngModelWatch (http://localhost:8000/bower_components/angular/angular.js:20555:36)
    at Scope.$digest (http://localhost:8000/bower_components/angular/angular.js:13957:40)
    at Scope.$apply (http://localhost:8000/bower_components/angular/angular.js:14227:24)
    at HTMLAnchorElement.<anonymous> (http://localhost:8000/bower_components/angular-xeditable/dist/js/xeditable.js:831:21)
    at HTMLAnchorElement.jQuery.event.dispatch (http://localhost:8000/bower_components/jquery/dist/jquery.js:4409:9)
    at HTMLAnchorElement.elemData.handle (http://localhost:8000/bower_components/jquery/dist/jquery.js:4095:28)

Если я просто обновлю модель, отредактировав поле (введя новую дату), в будущем ее можно будет редактировать, потому что дата хранится как (Date obj?):

Ср 06 Дек 2000 00:00:00 GMT+1000 (Якутское время (зима))

Как я могу преобразовать дату ввода в понятный для угловой формат?
Я также пытался заменить формат даты ввода на «новая дата (дата ввода здесь), но это не работает. Может быть, формат даты ввода не может быть проанализирован только из строки?

Подводя итог: мне нужно преобразовать формат ввода даты в Date obj ИЛИ получить через поля даты pg.js, такие как объекты Date. Как я могу что-то сделать из этого?


person Alendorff    schedule 09.11.2014    source источник


Ответы (2)


Postgres хранит даты в формате ISO 8601, который Javascript Date может парсить "из коробки", например:

var x = new Date("2000-11-30T14:00:00.000Z");
console.log(x);

приводит к Thu Nov 30 2000 06:00:00 GMT-0800 (PST), что правильно для моего часового пояса.

person sherb    schedule 09.11.2014

Я нашел ответ для себя ... Я попытался преобразовать дату ввода в Date obj на стороне сервера, а затем отправил json клиенту. На клиенте я всегда получал свою дату в виде строки, но не как объект Date. Когда я делаю новую дату (inputDate) на клиенте, все в порядке.

person Alendorff    schedule 09.11.2014