Угловой материал datepicker dateformat - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь получить дату из DatePicker и сохранить ее на сервере SQL, но вывод идет как «1538107200000».Какой это формат и как его преобразовать в формат даты, совместимый с форматом даты сервера sql.

в component.html

<input matInput [matDatepicker]="picker" placeholder="enter date"
           (dateInput)="addEvent('input', $event)">
    <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
    <mat-datepicker #picker></mat-datepicker>

в component.ts

addEvent(type: string, dinput: MatDatepickerInputEvent<Date>) {
    this.dinput.push(`${dinput.value}`);
    this.date = new Date(this.dinput[0].toString());
    this.dates = moment(this.date, 'YYYY-MM-DD').toString();
    console.log(this.dates);
  }

это дает ошибку неверной даты.Как это исправить?Пожалуйста, помогите.

Ответы [ 3 ]

0 голосов
/ 28 сентября 2018

Вы получаете дату в формате JSON.Ниже приведен пользовательский фильтр для преобразования формата даты json в реальную дату.

.filter("filterdate", function() {
var re = /\/Date\(([0-9]*)\)\//;
return function(x) {
    var m = x.match(re);
    if( m ) return new Date(parseInt(m[1]));
    else return null;
};
});

После этого добавьте фильтр ниже в component.html

<input {{dateInput| filterdate | date:'dd/MM/yyyy'}}>
0 голосов
/ 28 сентября 2018

1538107200000 - дата в миллисекундах (отметка времени эпохи).Чтобы преобразовать его в объект даты, используйте new Date(1538107200000).Чтобы получить дату в нужном формате, используйте moment(new Date(1538107200000)).format("YYYY-MM-DD").Это даст вам дату в формате ГГГГ-ММ-ДД.Теперь вам нужно сохранить это в SQL Server.Это перейдет на ваш сервер как String, вам нужно найти, какой формат даты поддерживает ваш сервер, привести эту строку к дате и сохранить в БД.

0 голосов
/ 28 сентября 2018

Это количество секунд с момента появления epoc, см. здесь .Я считаю, что вы не используете конструктор момента правильно.Попробуйте это:

moment(this.date).format('YYYY-MM-DD').toString();

Либо это, либо значение, которое вы передаете конструктору моментов, находится в формате, который момент не распознает.См. документацию .

...