在 AngularJS 中格式化日期时间

IT技术 javascript angularjs date datefilter
2021-03-20 15:06:38

如何在 AngularJS 中正确显示日期和时间?

下面的输出显示了输入和输出,有和没有 AngularJS 日期过滤器:

In: {{v.Dt}}  
AngularJS: {{v.Dt | date:'yyyy-MM-dd HH:mm:ss Z'}}

这打印:

In: 2012-10-16T17:57:28.556094Z 
AngularJS: 2012-10-16T17:57:28.556094Z

所需的显示格式是 2010-10-28 23:40:23 04002010-10-28 23:40:23 EST

6个回答

您的代码应该可以正常工作,请参阅此 fiddle

你必须确保你v.Dt是一个合适的Date对象才能让它工作。

{{dt | date:'yyyy-MM-dd HH:mm:ss Z'}}

或者如果 dateFormat 在范围内定义为 dateFormat = 'yyyy-MM-dd HH:mm:ss Z':

{{dt | date:dateFormat }}
dt 也可以是整数格式的 unix 时间戳
2021-04-24 15:06:38
它不需要是Date变量类型。时间戳长也很好用
2021-05-02 15:06:38
由于格式是一种装饰选项,因此直接在视图上执行此操作通常是一个更好的主意。
2021-05-05 15:06:38
thnkx..超级答案。是否可以以 12 小时格式显示时间?
2021-05-06 15:06:38

v.Dt 可能不是 Date() 对象。

http://jsfiddle.net/southerd/xG2t8/

但在你的控制器中:

scope.v.Dt = Date.parse(scope.v.Dt);
在我的案例中,David 以 DD/MM/YYYY 格式存储在数据库中。我转换为我在文本框中显示用户 DD.MM.YYYY 格式或以该格式获取用户输入并在我的模型中更新。如何在将其传递给 DB 之前更改它。我该如何改变
2021-04-22 15:06:38

我知道这是一个旧项目,但我想我会考虑另一种选择。

由于原始字符串不包含“T”分隔符,Angular 中的默认实现不会将其识别为日期。您可以使用 new Date 强制它,但这对数组来说有点麻烦。由于您可以将过滤器连接在一起,因此您可以使用过滤器将输入转换为日期,然后在转换后的日期上应用 date: 过滤器。创建一个新的自定义过滤器,如下所示:

app
.filter("asDate", function () {
    return function (input) {
        return new Date(input);
    }
});

然后在您的标记中,您可以将过滤器连接在一起:

{{item.myDateTimeString | asDate | date:'shortDate'}}
是的,更可靠,更高效..谢谢分享
2021-05-16 15:06:38

您可以像这样获得“日期”过滤器:

var today = $filter('date')(new Date(),'yyyy-MM-dd HH:mm:ss Z');

这将以您想要的格式为您提供今天的日期。

大声笑是的,莱安德罗。我不知道它是怎么变成这样的。我想我在想“使用”。
2021-05-03 15:06:38

这是一个过滤器,它将采用日期字符串或 javascript Date() 对象。它使用Moment.js并且可以应用任何Moment.js转换函数,例如流行的“fromNow”

angular.module('myModule').filter('moment', function () {
  return function (input, momentFn /*, param1, param2, ...param n */) {
    var args = Array.prototype.slice.call(arguments, 2),
        momentObj = moment(input);
    return momentObj[momentFn].apply(momentObj, args);
  };
});

所以...

{{ anyDateObjectOrString | moment: 'format': 'MMM DD, YYYY' }}

将显示2014 年 11 月 11 日

{{ anyDateObjectOrString | moment: 'fromNow' }}

将显示10 分钟前

如果需要调用多个矩函数,可以将它们链接起来。这将转换为 UTC,然后格式化...

{{ someDate | moment: 'utc' | moment: 'format': 'MMM DD, YYYY' }}

https://gist.github.com/cmmartin/341b017194bac09ffa1a

这很棒,也可以与 Moment Timezone 结合使用。例如:{{foo.created_at | 时刻:'tz':'美国/纽约' | 时刻:'格式':'h:mm a z'}}
2021-04-25 15:06:38
这是更强大的方法谢谢!
2021-05-08 15:06:38