我正在使用以下代码段来更新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>