我正在使用以下代码段来更新firestore中的文档 . 这是一种反应形式 . 我目前遇到的问题是,当我更改表单上的日期时,表单将使用以下格式更新它:

周五2018年2018 00:00:00 GMT 0100(英国夏令时间)

Questions

1 - 是否可以将该日期转换为日期选择器本身的显示方式?在这种情况下:22/06/2018 .

2 - 一旦我有了这种格式,如何将它发送到 formatDate 函数以返回我想要的值和时间,然后将其合并到下面的代码片段中,用新值更新我的文档?目前,下面的代码段处理实时表单中的所有输入 .

Code to update to firestore

async setDoc() {
  // this.formatDate(this.formGroup.value.my_date);
  console.log(this.formGroup.value.my_date);

  try {
    await this.docRef.set(this.formGroup.value, { merge: true });
    this.state = 'synced';
  } catch (err) {
    console.log('fireform = ', err)
    this.formError.emit(err.message)
    this.state = 'error';
  }
}

Formatting date

我检查用户首选的日期格式,然后使用moment.js来适当地格式化日期 .

formatDate(newIssueDate) {
var splitDate = newIssueDate.split('/');
var completeSplit = splitDate[0] + '/' + splitDate[1] + '/' + splitDate[2];

if (this.settingsService.usersetting_dateformat === 'DD/MM/YYYY') {
  var yearVal = splitDate[2];
  var monthVal = splitDate[1];
  var dateVal = splitDate[0];
} else {
  var yearVal = splitDate[2];
  var monthVal = splitDate[0];
  var dateVal = splitDate[1];
}

var now = new Date();
var hoursVal = now.getUTCHours();
var minutesVal = now.getUTCMinutes();
var secondsVal = now.getUTCSeconds();
var milliSecondsVal = now.getUTCMilliseconds();

if (moment(now).isDST()) {
  hoursVal = now.getUTCHours() + 1;
} else {
  hoursVal = now.getUTCHours();
}

var newDateValue = new Date(yearVal, monthVal - 1, dateVal, hoursVal, minutesVal, secondsVal, milliSecondsVal);

return newDateValue;
}

Date Picker HTML

<mat-form-field>
    <input matInput [matDatepicker]="dp3" placeholder="Due Date" formControlName="issue_due_date" [(ngModel)]="dateBinding">
    <mat-datepicker-toggle matSuffix [for]="dp3"></mat-datepicker-toggle>
    <mat-datepicker #dp3 disabled="false"></mat-datepicker>
</mat-form-field>