【问题标题】:Angular date filter unexpectedly shifts 1 h角度日期过滤器意外移动 1 小时
【发布时间】:2015-03-24 11:36:42
【问题描述】:

我一直在使用角度日期过滤器来格式化我的时间戳。但它似乎将我的时间戳改变了 1 小时,我不知道如何控制它。

2015-06-18T23:59:59Z 已转换为 19-Jun-2015 00:59:59

我知道它与时区有关,但我的时间戳指定了时区。我不想在我的过滤器中硬编码时区,因为我不想在英国夏季/冬季时间更改时更新我的​​应用程序。

有人可以给我建议吗?

这是一个例子:

http://jsfiddle.net/chfw/5vy5s1ey/1/

<div ng-app>
    2015-06-18T23:59:59Z was converted to  <font color=red> 
    {{"2015-06-18T23:59:59Z" | date:'dd-MMM-yyyy HH:mm:ss'}}
    </font>
</div>

【问题讨论】:

  • 目前还不确定为什么,但是如果您将字符串中的日期从 2015-06-18T23:59:59Z 更改为 2015-06-18 23:59:59(删除了 T 和 Z),它将按预期工作。
  • 确实,它可以在没有 'T' 和 'Z' 的情况下工作。
  • 它可能正在考虑UTC时间。例如,我将其视为 3 小时的差异。

标签: angularjs timestamp


【解决方案1】:

我相信这是因为“T”和“Z”指的是 UTC 时区,过滤器会考虑到这一点并尝试进行必要的调整。不完全确定具体细节。

删除 'T' 和 'Z' 会将其视为中性时间戳,不会进行任何移动:

{{"2015-06-18 23:59:59" | date:'dd-MMM-yyyy HH:mm:ss'}}

Fiddle

【讨论】:

    猜你喜欢
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    相关资源
    最近更新 更多