格式AngularJS中的日期时间

bsr*_*bsr 122 javascript date angularjs datefilter

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

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

In: {{v.Dt}}  
AngularJS: {{v.Dt | date:'yyyy-MM-dd HH:mm:ss Z'}}
Run Code Online (Sandbox Code Playgroud)

这打印:

In: 2012-10-16T17:57:28.556094Z 
AngularJS: 2012-10-16T17:57:28.556094Z
Run Code Online (Sandbox Code Playgroud)

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

Glo*_*opy 119

您的代码应该正常工作,因为它看到这个小提琴.

你必须确保你v.Dt是一个正确的Date对象,它可以工作.

{{dt | date:'yyyy-MM-dd HH:mm:ss Z'}}
Run Code Online (Sandbox Code Playgroud)

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

{{dt | date:dateFormat }}
Run Code Online (Sandbox Code Playgroud)


Dav*_*her 63

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

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

但在你的控制器中:

scope.v.Dt = Date.parse(scope.v.Dt);
Run Code Online (Sandbox Code Playgroud)


Jim*_*ley 58

我知道这是一个旧项目,但我想我会考虑其他选择.

由于原始字符串不包含"T"标记,因此Angular中的默认实现不会将其识别为日期.您可以使用新的日期强制它,但这对阵列来说有点痛苦.由于您可以将过滤器组合在一起,因此您可以使用过滤器将输入转换为日期,然后在转换日期应用日期:过滤器.创建新的自定义筛选器,如下所示:

app
.filter("asDate", function () {
    return function (input) {
        return new Date(input);
    }
});
Run Code Online (Sandbox Code Playgroud)

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

{{item.myDateTimeString | asDate | date:'shortDate'}}
Run Code Online (Sandbox Code Playgroud)


Cod*_*ide 56

你可以像这样得到'日期'过滤器:

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

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


Cha*_*tin 49

这是一个过滤器,它将采用日期字符串OR 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);
  };
});
Run Code Online (Sandbox Code Playgroud)

所以...

{{ anyDateObjectOrString | moment: 'format': 'MMM DD, YYYY' }}
Run Code Online (Sandbox Code Playgroud)

将于2014年11月11日展出

{{ anyDateObjectOrString | moment: 'fromNow' }}
Run Code Online (Sandbox Code Playgroud)

将在10分钟前显示

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

{{ someDate | moment: 'utc' | moment: 'format': 'MMM DD, YYYY' }}
Run Code Online (Sandbox Code Playgroud)

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

  • 这很棒,也可以与Moment Timezone结合使用.例如:{{foo.created_at | 时刻:'tz':'America/New_York'| 时刻:'格式':'h:mm a z'}} (2认同)

Jam*_*ruk 22

以下是几个流行的例子:

<div>{{myDate | date:'M/d/yyyy'}}</div> 2014年7月4日

<div>{{myDate | date:'yyyy-MM-dd'}}</div> 2014年7月4日

<div>{{myDate | date:'M/d/yyyy HH:mm:ss'}}</div> 2014年7月4日12:01:59


Cha*_*ase 15

您是否看过文档Writing指令(简短版)部分?

HTML

<div ng-controller="Ctrl2">
      Date format: <input ng-model="format"> <hr/>
      Current time is: <span my-current-time="format"></span>
</div> 
Run Code Online (Sandbox Code Playgroud)

JS

function Ctrl2($scope) {
  $scope.format = 'M/d/yy h:mm:ss a';
}
Run Code Online (Sandbox Code Playgroud)

  • 我认为你的评论非常有效.学习过滤器是AngularJS的重要组成部分.这真的不那么难. (2认同)

小智 6

在控制器内部,可以通过注入$ filter来过滤格式.

var date = $filter('date')(new Date(),'MMM dd, yyyy');
Run Code Online (Sandbox Code Playgroud)


小智 5

简单地说,如果你想输出像"2017年1月30日下午4:31:20",那么按照简单的步骤

step1-在js控制器中声明以下变量

$scope.current_time = new Date();
Run Code Online (Sandbox Code Playgroud)

step2-在html页面中显示如

{{current_time | 日期: '中'}}


小智 5

我们可以在角度非常容易地在视图侧格式化日期....请检查以下示例:

{{dt | 日期:"dd-MM-yyyy"}}