28 lines
815 B
TypeScript
28 lines
815 B
TypeScript
import { NativeDateAdapter } from '@angular/material';
|
|
|
|
|
|
export class LocalizedDateAdapter extends NativeDateAdapter {
|
|
|
|
parse(value: any): Date | null {
|
|
const invalidDate = new Date(NaN);
|
|
if (typeof value === 'string') {
|
|
if (value === '') { return null; } else {
|
|
const splitted = value.split('/');
|
|
if (splitted.length !== 3) { return invalidDate; } else {
|
|
const day = Number(splitted[0]);
|
|
const month = Number(splitted[1]) - 1;
|
|
const year = Number(splitted[2]);
|
|
|
|
if (day < 1 || day > 31 || month < 0 || month > 11 || year < 1 || year > 9999) { return invalidDate; }
|
|
|
|
return new Date(year, month, day);
|
|
}
|
|
}
|
|
} else {
|
|
const dateValue = typeof value === 'number' ? value : Date.parse(value);
|
|
return isNaN(dateValue) ? invalidDate : new Date(dateValue);
|
|
}
|
|
}
|
|
|
|
}
|