AngularJS日期格式问题

时间:2016-06-06 11:29:20

标签: javascript angularjs date

在尝试inbuilt angularjs date filter格式化日期字符串时,我没有获得" 2016-05-17 14:45:59 + 04",

的格式化日期

请参阅plunkr https://plnkr.co/edit/VzRpNFkrWasv3nPlIQyg?p=preview

请帮助我理解它为什么工作,当我解析字符串时我得到了正确的日期对象" 2016-05-17 14:45:59 + 04"使用见截图

enter image description here

提前感谢您的帮助。



<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Example - example-example101-production</title>
  

  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
  
  
  
</head>
<body ng-app="">

<span ng-non-bindable>{{2016-05-17 14:45:59+04 | date:'yyyy-MM-dd'}}</span>:
<span>{{'2016-05-17 14:45:59+04' | date:'yyyy-MM-dd'}}</span><br>

</body>
</html>

<!-- 
Copyright 2016 Google Inc. All Rights Reserved.
Use of this source code is governed by an MIT-style license that
can be found in the LICENSE file at http://angular.io/license
-->
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:3)

使用Javascript Date对象,而不是将其作为字符串传递。

//控制器中的某个地方

$scope.dt = new Date('2016-05-17 14:45:59+04');

//在HTML中

<span>{{dt | date:'yyyy-MM-dd'}}</span>

你也可以编写自定义过滤器来完成它,你已经完成了。

此处的关键点是使用Javascript Date对象

答案 1 :(得分:2)

您应该使用符合ISO 8601标准的日期/时间格式:

<span>{{'2016-05-17T14:45:59+04:00' | date:'yyyy-MM-dd'}}</span><br>

答案 2 :(得分:1)

来自link that you provided的引用,在使用情况&gt;下参数:

  

格式化日期对象,毫秒(字符串或数字)的日期   或各种ISO 8601日期时间字符串格式(例如   yyyy-MM-ddTHH:mm:ss.sssZ及其较短的版本   yyyy-MM-ddTHH:mmZ,yyyy-MM-dd或yyyyMMddTHHmmssZ)。如果没有时区   在字符串输入中指定,时间被认为是在   当地时区。

因此,请为日期字符串选择不同的格式,例如:

2016-05-17T14:45:59.000+0400

答案 3 :(得分:0)

如果您想避免在每次必须处理日期时被迫在控制器中执行new Date(),您可以使用过滤器自动将日期转换为new Date()

angular
    .module('myApp')
    .filter('toNewDate', toNewDate);

function toNewDate() {
    return toNewDateFilter;

    ////////////////

    function toNewDateFilter(date) {
        return new Date(date);
    }

}

现在您可以通过您的应用程序使用它并节省大量时间(例如,当您从Web服务接收日期时):

<span class="date">{{post.created_at| toNewDate | date: 'dd MMMM yyyy'}}</span>