【问题标题】:Angular Date Format changing the date角度日期格式更改日期
【发布时间】:2018-02-27 20:50:20
【问题描述】:

使用 Angular 4,我们尝试在 UI 中显示一个日期。当我们从端点获取日期时,它如下所示:

2018-04-03T00:00:00.000Z

现在,在 UI 中,只需执行以下操作:

activeRule.startDate

结果显示以上内容。

但是,当我尝试使用以下格式设置该日期时:

{{activeRule.startDate | date : 'MMM d, y' : 'UTC' }}

规则显示为提前一天

Apr 2, 2018

我尝试附加时区值,但没有任何效果。 日期格式更改检索到的值对我来说很奇怪。有人可以提供见解和帮助吗?谢谢。


我使用矩框架解决了这个问题。

rule.startDate = moment(rule.startDate, 'YYYYMMDD').toISOString()

【问题讨论】:

    标签: angular date user-interface


    【解决方案1】:

    默认情况下,Angular 的日期管道会以浏览器的本地时区显示日期和时间。例如,如果您位于美国东部时区,2018-04-03T00:00:00.000Z 等于 Mon Apr 02 2018 19:00:00 GMT-0500 (EDT)。在 Angular 5 中,您可以通过传入时区来覆盖此行为:

    {{activeRule.startDate | date : 'MMM d, y' : '+0000'}}
    

    https://angular.io/api/common/DatePipe

    【讨论】:

    • 这似乎没有达到预期的效果。它仍然提前一天显示。这是 Angular 5 独有的吗?
    • 可能是。管道的国际化在 5 中进行了更改。您可以在此处阅读更多信息:auth0.com/blog/whats-new-in-angular5
    • @RunFranks525 在 Angular 5.0.0 上运行良好:stackblitz.com/edit/angular-bwvhcx?file=app%2Fapp.component.ts。你为什么不发布一个完整的例子来重现这个问题?
    • @JBNizet 我们的应用程序是 Angular 4 应用程序,似乎管道的更改是 Angular 5 升级的一部分,因此我们无法利用它。话虽如此,我继续使用 moment 框架并找到了一个很好的解决方案。将相应更新。
    • 啊,对不起,我以为你在使用 Angular 5。你为什么不升级?升级很容易,无论如何你最终都必须这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    相关资源
    最近更新 更多