Search code examples
javascriptangulardate-pipe

How to set locale in DatePipe in Angular 2?


I want to display Date using European format dd/MM/yyyy but using DatePipe shortDate format it only display using US date style MM/dd/yyyy.
I'm assuming thats the default locale is en_US. Maybe I am missing in the docs but how can I change the default locale settings in an Angular2 app? Or maybe is there some way to pass a custom format to DatePipe ?


Solution

  • As of Angular2 RC6, you can set default locale in your app module, by adding a provider:

    @NgModule({
      providers: [
        { provide: LOCALE_ID, useValue: "en-US" }, //replace "en-US" with your locale
        //otherProviders...
      ]
    })
    

    The Currency/Date/Number pipes should pick up the locale. LOCALE_ID is an OpaqueToken, to be imported from angular/core.

    import { LOCALE_ID } from '@angular/core';
    

    For a more advanced use case, you may want to pick up locale from a service. Locale will be resolved (once) when component using date pipe is created:

    {
      provide: LOCALE_ID,
      deps: [SettingsService],      //some service handling global settings
      useFactory: (settingsService) => settingsService.getLanguage()  //returns locale string
    }
    

    Hope it works for you.