是的,我知道有两种方法可以实现。
- 使用日期适配器。您可以将其用作服务或全局函数。
import { formatDate } from '@angular/common';
import { Injectable } from '@angular/core';
import { NativeDateAdapter } from '@angular/material/core';
export const PICK_FORMATS = {
parse: { dateInput: { month: 'short', year: 'numeric', day: 'numeric' } },
display: {
dateInput: 'input',
monthYearLabel: { year: 'numeric', month: 'short' },
dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },
monthYearA11yLabel: { year: 'numeric', month: 'long' }
}
};
@Injectable({
providedIn: 'root'
})
export class PickDateAdapter extends NativeDateAdapter {
format(date: Date, displayFormat: Object): string {
if (displayFormat === 'input') {
return formatDate(date, 'dd/MM/yyyy', this.locale);;
} else {
return date.toDateString();
}
}
}
// add this to your.module.ts
providers: [
NomineeService,
{ provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, useValue: { appearance: 'legacy' } },
{ provide: DateAdapter, useClass: PickDateAdapter },
{ provide: MAT_DATE_FORMATS, useValue: PICK_FORMATS },
]
使用用户定义的函数将ISODate转换为可读日期。
formatDate(date): string {
const _date = new Date(date);
const day = _date.getDate();
const month = _date.getMonth() + 1;
const year = _date.getFullYear();
return `${year}-${month}-${day}`;
}
formatTime(date: Date): string {
const _date = new Date(date);
const hours = _date.getHours()
const minutes = _date.getMinutes();
const seconds = _date.getSeconds();
return `${hours}:${minutes}:${seconds}`;
}
toDateTimestamp(date: Date): string {
const dateStamp = this.formatDate(date);
const timeStamp = this.formatTime(date);
return `${dateStamp} ${timeStamp}`
}
calculateDays(fromDate, toDate): number {
const FromDate = new Date(fromDate);
const ToDate = new Date(toDate);
const difference = ToDate.getTime() - FromDate.getTime();
const days = Math.round((difference / (1000 * 60 * 60 * 24)));
return days;
}