Reputation: 141
I want to change the default date format (YYYY-MM-DD) to some other format like (MM-DD-YYYY).
This is my calendar HTML structure.
<mat-form-field class="full-width">
<input matInput [matDatepicker]="picker"
[(ngModel)]="currentDay"
(dateChange)="currentDayChanged()"
required
placeholder="date"
name="currentDay">
<mat-datepicker-toggle matSuffix
[for]="picker">
</mat-datepicker-toggle>
<mat-datepicker #picker></mat-datepicker>
</mat-form-field>
Upvotes: 4
Views: 10188
Reputation: 77
Set in AppModule your locale!
Example for Brazil,
import { LOCALE_ID } from '@angular/core';
import localePt from '@angular/common/locales/pt';
registerLocaleData(localePt, 'pt-BR');
@NgModule({
declarations: [
AppComponent
],
imports: [],
providers: [
{ provide: LOCALE_ID, useValue: 'pt-BR' }
],
bootstrap: [AppComponent]
})
export class AppModule { }
Upvotes: 4
Reputation: 1063
There is a blog about it: https://blog.angular.io/taking-advantage-of-the-angular-material-datepicker-237e80fa14b3
(in case the URL becomes invalid), For example, say you’re already using Moment.js throughout your app, you can create a MomentDateAdapter:
Inherit a class
class MomentDateAdapter extends DateAdapter<Moment> {
parse(value: any, parseFormat: any): Moment {
return moment(value, parseFormat);
}
// Implementation for remaining abstract methods of DateAdapter.
}
Create a const like this, f.e. in a separate typescript file:
const MOMENT_FORMATS = {
parse: {
dateInput: 'LL',
},
display: {
monthYearLabel: 'MMM YYYY',
// See DateFormats for other required formats.
},
};
finally provide both of these things in your application module
@NgModule({
imports: [MdDatepickerModule, ...],
providers: [
{provide: DateAdapter, useClass: MomentDateAdapter},
{provide: MD_DATE_FORMATS, useValue: MOMENT_FORMATS},
],
})
class AppModule {}
I appreciate if you let us know your results.
Upvotes: 3