AngularJS |日期过滤器似乎没有改变我的日期显示方式

时间:2013-08-13 07:40:22

标签: angularjs

我的HTML中有以下内容:

{{ row.createdDate }}

这个日期来自JSON,看起来像这样:“createdDate = 13-08-2013 03:02”

这会创建一个日期:“13-08-2013 03:27”

我将其更改为:

{{ row.createdDate | date:'MM/dd/yy HH:mm' }}

仍然创造了相同的日期:“13-08-2013 03:27”

似乎日期过滤器对我没有任何作用。问题是日期过滤器要求日期为特定格式,如果是,那么我的日期应该是什么格式。以下是我目前使用MS Web API的格式:

json.SerializerSettings.Converters.Add( 
    new IsoDateTimeConverter { DateTimeFormat = "dd-MM-yyyy hh:mm" });

2 个答案:

答案 0 :(得分:3)

这可能与row.createdDate的数据类型有关。我认为您需要使用date类型变量表达式,如:

首先,在控制器中,您可以添加一个函数来从字符串类型变量中获取日期类型变量,如

$scope.GetCreateDate = function () {
            return new Date(row.createdDate);
        };

然后在绑定表达式中使用该日期类型变量,如下:

{{ row.GetCreateDate | date:'MM/dd/yy HH:mm' }}

答案 1 :(得分:2)

我把Sanjeev的答案与Convert a mySQL date to Javascript date结合起来,制作了一个更通用的版本。

将它放在你的控制器中:

  $scope.toJsDate = function(str){
    if(!str)return null;
    var t = str.split(/[- :]/);
    var d = new Date(t[0], t[1]-1, t[2], t[3], t[4], t[5]);
    return d;
  }

并将其放入HTML:

{{toJsDate('2013-09-19 02:23:51') | date:'MM/dd/yyyy @ h:mma'}}

另一种选择是使用类似:AngularJS: How to format ISO8601 date format?

的过滤器