【问题标题】:Angular date filter not working角度日期过滤器不起作用
【发布时间】:2016-03-13 17:22:11
【问题描述】:

不工作或我没有正确使用它。我在 mongodb 中保存了一个日期(这是正确的):

"2015-12-10T12:00:00.000Z"

我有一个日期角度过滤器:

date: 'medium' 在视图中显示 2015 年 12 月 10 日上午 7:00:00

date: 'medium' : +0500 将其更改为 2015 年 12 月 10 日下午 5:00:00

date: 'medium' : -0500 显示为:Dec 10, 2015 7:00:00 AM AGAIN

我怎么能让它在下午 12 点显示?!哈哈,我在 EST 时间

【问题讨论】:

  • 你希望它基本上调整时区?

标签: angularjs date filter


【解决方案1】:

末尾的Z 表示“UTC”。因此,该日期表示在 UTC 时区显示为 2015-12-10T12:00:00.000 的时刻。

并且您希望将其显示为就像您在 UTC 时区中一样,因为您不希望时间部分与它在 UTC 中的时间部分不同。

所以,使用 UTC 作为时区:

date:'medium':'UTC'

输出:

Dec 10, 2015 12:00:00 PM

【讨论】:

  • 你每天都会学到新东西。这是一个更好的答案。我不知道这是 Angular 日期过滤器的日期选项。
  • 所以我想我不明白为什么在使用“中等”时它会以 7am 的角度显示。 +5 -5 强制它到下午 5 点,然后回到早上 7 点,没有每次接触 12。就像它表现得像下午 12 点,但显示为早上 7 点......为什么?
  • 默认情况下,使用您的浏览器时区。由于您的浏览器时区是 EST,即 UTC-05:00,因此当 UTC 时间为 12:00 时,则为 EST 时间上午 07:00。如果您告诉过滤器将日期格式化为就像您在 UTC+05:00 时一样(即好像您住在马尔代夫或乌兹别克斯坦),那么它会将其格式化为下午 5:00。在您的情况下,使用 -05:00 与不使用任何明确的时区相同,因为您的浏览器位于 -05:00。
【解决方案2】:

过滤器

先创建自定义过滤器:

.filter( 'trimDateTime', function(){
    function(ds){
        var z = ds.indexOf('Z')
        return ds.substr(0, z)
    }
 }

html

然后对数据应用 2 个过滤器

<p>{{ dateString | trimDateTime | date: 'medium' }}</p>

为什么

Angular 过滤器是一种强大的机制,可以让您的数据保持完整,但以特殊的方式呈现。您可以轻松地从日期字符串中删除“Z”,但稍后,另一个 UX 可能会期望该数据完好无损。

codepen

http://codepen.io/jusopi/pen/pgvOBr

【讨论】:

    猜你喜欢
    • 2021-08-12
    • 2014-09-01
    • 2018-05-31
    • 2023-04-03
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    相关资源
    最近更新 更多