Angular Bootstrap - ngbDatepicker - преобразовать выбранную дату в объект даты

в форме, для поля даты с использованием angular bootstrap - ngbDatepicker

<input  ngbDatepicker #d="ngbDatepicker" [readonly]="true"
                            [minDate]="{year: 1900, month: 1, day: 1}"
                            [formControl]="empForm.controls['dob']" />

а дата есть. введите здесь описание изображения

Здесь мы пытаемся создать объект даты, чтобы заменить дату в форме сотрудника. Но получение ДРУГОЙ свидания

let oDob = new Date(employeeToSave.dob['year'], employeeToSave.dob['month'],  employeeToSave.dob['day']);

Чт, 02 января 2020 00:00:00 GMT + 0530 (стандартное индийское время) выбранная дата "2019-12-02" теперь "2020-01-02"


person Manu    schedule 06.12.2019    source источник


Ответы (3)


В Date() индексирование месяца - на основе 0, любое число, которое вы хотите ввести, например, december(12th month), будет иметь значение 11. Так что попробуйте поставить (месяц-1) в new Date().

Как показано ниже:

let oDob = new Date(employeeToSave.dob['year'], employeeToSave.dob['month']-1,  employeeToSave.dob['day']);

Рабочий фрагмент:

let month=12;
let year = 2019;
let day = 12;
dob = new Date(year,month,day);
console.log("wrong Date : "+dob);

dob2 = new Date(year,month-1,day);
console.log("correct Date : "+dob2);

person Himanshu Singh    schedule 06.12.2019

Вы можете изменить формат даты, реализовав NgbDateAdapter, но на самом деле есть собственный Date адаптер из коробки.

См. официальные документы, вы ищете эту строку:

 providers: [{provide: NgbDateAdapter, useClass: NgbDateNativeAdapter}]
person Lunin Roman    schedule 06.12.2019

Month-1 и Day + 1

let oDob = new Date(employeeToSave.dob['year'], employeeToSave.dob['month'] - 1, employeeToSave.dob['day'] + 1);
person Manu    schedule 06.12.2019
comment
Вы должны добавить несколько комментариев к своему ответу, чтобы сделать его более полезным. - person HDJEMAI; 07.12.2019