Angular 4 date pipe displays wrong date because of time zones - how to fix this?

前端 未结 3 1073
[愿得一人]
[愿得一人] 2020-11-29 03:24

I have a date value in each of my objects that I can Print like this:

 {{competition.compStart }}

And here is how it l

3条回答
  •  挽巷
    挽巷 (楼主)
    2020-11-29 03:59

    Behind the scenes, DatePipe uses locale to display date in user's timezone. Try with client's timezone data:

    1931-05-31T00:00:00.000-0300 instead of 1931-05-31T00:00:00.000+0000.

    You can get client's offset in minutes using (new Date()).getTimezoneOffset()

    This is actually the known issue/limitation of DatePipe. Community is aware of it. It the future, you will be able to specify timezone as one of parameters ({{ value | date:format:zone }}).

    Here is the issue on github: https://github.com/angular/angular/issues/9324

    For more advanced date manipulations, I recommend moment.js (less headaches, better consistency, less testing, simpler maintaining).

    EDIT: It has been added:

    date_expression | date[:format[:timezone[:locale]]]

    Code: https://github.com/angular/angular/blob/5.0.4/packages/common/src/pipes/date_pipe.ts#L137 Docs: https://angular.io/api/common/DatePipe

提交回复
热议问题