Как установить правильный формат даты для редактируемой даты
Я получил некоторые поля даты из 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 (Якутское время (зима))
Как я могу конвертировать введенную дату в понятный для углового формата?
Я также попытался заменить формат входной даты на "Новая дата (input-date-here)", но это не работает. Может быть, формат входной даты не может быть проанализирован только из строки?
Резюмируя: мне нужно преобразовать входной формат даты в Date obj ИЛИ получить через поля даты pg.js, такие как объекты Date. Как я могу сделать что-то из этого?
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)
что правильно для моего часового пояса.
Я нашел ответ для себя... Я попытался преобразовать свою дату ввода в Date obj на стороне сервера, а затем отправил json клиенту. На клиенте я всегда получал свою дату в виде строки, а не как объект Date. Когда я делаю новую дату (inputDate) на клиенте все в порядке.