Chcę wyświetlić datę w formacie europejskim, dd/MM/yyyy
ale używając formatu DatePipe shortDate , wyświetla się tylko w amerykańskim stylu daty MM/dd/yyyy
.
Zakładam, że domyślne ustawienie regionalne to en_US. Może brakuje mi dokumentów, ale jak mogę zmienić domyślne ustawienia regionalne w aplikacji Angular2? A może jest jakiś sposób na przekazanie niestandardowego formatu do DatePipe?
javascript
angular
date-pipe
nsbm
źródło
źródło
Odpowiedzi:
Począwszy od Angular2 RC6, możesz ustawić domyślne ustawienia regionalne w module aplikacji, dodając dostawcę:
Rury Waluta / Data / Liczba powinny uwzględniać ustawienia regionalne. LOCALE_ID jest nieprzezroczystym tokenem , który ma zostać zaimportowany z angular / core.
W przypadku bardziej zaawansowanego przypadku możesz chcieć pobrać lokalizację z usługi. Ustawienia regionalne zostaną rozwiązane (raz) po utworzeniu komponentu używającego potoku daty:
Mam nadzieję, że to działa dla Ciebie.
źródło
new CurrencyPipe('en-US');
. Mam nadzieję, że jest to przydatne do czegoś, ponieważ pojawiło się to jako pierwszy wynik podczas wyszukiwania w Google mojego problemu.Rozwiązanie z LOCALE_ID jest świetne, jeśli chcesz raz ustawić język dla swojej aplikacji. Ale to nie działa, jeśli chcesz zmienić język w czasie wykonywania. W tym przypadku możesz zaimplementować niestandardowy potok daty.
Teraz, jeśli zmienisz język wyświetlania aplikacji za pomocą TranslateService (zobacz ngx-translate )
formaty w Twojej aplikacji powinny być aktualizowane automatycznie.
Przykład użycia:
lub sprawdź mój prosty projekt „Notatki” tutaj .
źródło
Z
angular5
powyższą odpowiedzią już nie działa!Poniższy kod:
app.module.ts
Prowadzi do następującego błędu:
Ze
angular5
trzeba załadować i zarejestrować używany plik lokalizacji na własną rękę.app.module.ts
Dokumentacja
źródło
registerLocaleData
to wystarczy, cóż, nie jest.Jeśli używasz
TranslateService
from@ngx-translate/core
, poniżej znajduje się wersja bez tworzenia nowego potoku, która działa z dynamicznym przełączaniem w czasie wykonywania (testowana na Angular 7). Korzystanie zlocale
parametru DatePipe ( dokumentacja ):Najpierw zadeklaruj ustawienia regionalne, których używasz w swojej aplikacji, np. W
app.component.ts
:Następnie używaj potoku dynamicznie:
myComponent.component.html
myComponent.component.ts
źródło
Zajrzałem do date_pipe.ts i są tam dwie interesujące informacje. u góry znajdują się następujące dwie linie:
U dołu jest ta linia:
To sugeruje mi, że potok daty jest obecnie zakodowany na stałe jako „en-US”.
Proszę mnie oświecić, jeśli się mylę.
źródło
W app.module.ts dodaj następujące importy. Jest to lista opcji Locale tutaj .
Następnie dodaj dostawcę
Użyj rur w html. Oto dokumentacja kątowa .
źródło
Robisz coś takiego:
{{ dateObj | date:'shortDate' }}
lub
{{ dateObj | date:'ddmmy' }}
Zobacz: https://angular.io/docs/ts/latest/api/common/index/DatePipe-pipe.html
źródło
Zmagałem się z tym samym problemem i nie działałem, używając tego
Próbowałem więc obejścia, nie najlepszego rozwiązania, ale zadziałało:
Zawsze mogę stworzyć niestandardową rurę.
źródło
Dla tych, którzy mają problemy z AOT, musisz zrobić to trochę inaczej z useFactory:
źródło
{ provide: LOCALE_ID, useFactory: () => 'fr-CA'}
Skopiowany potok Google zmienił ustawienia regionalne i działa w moim kraju, możliwe, że nie ukończyli go dla wszystkich lokalizacji. Poniżej znajduje się kod.
źródło
Ok, proponuję to rozwiązanie, bardzo proste, za pomocą
ngx-translate
źródło
To może być trochę za późno, ale w moim przypadku (angular 6) utworzyłem prostą rurkę na górze DatePipe, coś takiego:
Może nie jest to najlepsze rozwiązanie, ale proste i działa.
źródło