【问题标题】:Angular Date pipe with Timezone doesn't convert properly带有时区的角度日期管道无法正确转换
【发布时间】:2021-09-29 02:03:37
【问题描述】:

我将 UTC 日期时间传递给 Angular 应用程序,并且我想在不同的时区显示时间。这是 Postman 上返回的日期的样子:

"2021-07-21T09:15:00" - this is in UTC.

我想将其转换为不同的时区(在运行时确定),所以我尝试了类似下面的方法,但它始终显示相同的 UTC 值。

<ng-template kendoGridCellTemplate let-dataItem>
      {{ dataItem.returnedTime | date: 'hh:mm a' : 'IST' }}
    </ng-template>

我也尝试了以下方法:

<ng-template kendoGridCellTemplate let-dataItem>
      {{ dataItem.returnedTime | date: 'shortTime' : 'IST' }}
    </ng-template>

 <ng-template kendoGridCellTemplate let-dataItem>
      {{ dataItem.returnedTime | date: 'hh:mm a' : '+530' }}
    </ng-template>

我希望这显示为下午 2:45,而不是显示为上午 9:15。

这里有什么问题?A

【问题讨论】:

    标签: angular date time timezone pipe


    【解决方案1】:

    如果该值是 UTC,它的末尾应该有一个 Z,如 "2021-07-21T09:15:00Z"

    根据ECMAScript spec

    ...当 UTC 偏移表示不存在时,仅日期形式被解释为 UTC 时间,日期时间形式被解释为本地时间

    Z 附加到输入字符串,无论是在您的后端还是在您收到它时,它应该可以正常工作。

    【讨论】:

    • 另外,我不完全确定"IST" 是否有效。该缩写有三个不同的时区(印度、以色列、爱尔兰)。无论如何,Angular 的时区功能都是错误的。见github.com/angular/angular/issues/20225
    • 谢谢!这真的很有帮助。你是对的,'IST' 没有给出正确的转换,我不得不使用实际的偏移量。
    猜你喜欢
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多