在angularjs中格式化和显示日期

时间:2016-05-12 04:07:24

标签: angularjs jquery-ui-datepicker

我创建了一个datepicker指令,该指令使用jquery datepicker生成日历。我们可以格式化选择日期后显示数据的方式。我有一些存储在数据库中的日期。 我的要求是仅在显示并且不想更改模型数据时以某种特定格式加载日期。

我创建了一个过滤器来格式化文本,但它经常返回" Nan Undefined NaN"

这是我的过滤器

    myUploadApp.filter('cmdate', ['$filter', function ($filter) {
        return function (input, format) {             
          if (input) {
            return $filter('date')(new Date(Date.parse(input)), format);
          } else {
            return null;
         }
      };
   }]);

并调用此过滤器" cmdate:' dd MMM yyyy' "这是添加的。我的输入日期格式将是这样的" 23/04 / 2016"。

2 个答案:

答案 0 :(得分:0)

你应该结帐moment.js - http://momentjs.com/

我用它将“2016-05-12T14:00:00.346Z”之类的日期改为“10小时内”等字样

<强> fromNow.filter.js

myapp.filter('fromNow', [, function () {
        return function (date) {
            return moment(date).fromNow();
        }
    };
}]);

查看它是否包含您需要的格式化程序

答案 1 :(得分:0)

Date.parse接受字符串格式MM/dd/yyyy,您的输入更像dd/MM/yyyy,这就是它无效的原因。

如果您坚持使用此格式,则需要在parse;

之前更正格式
.filter('cmdate', ['$filter', function ($filter) {
    return function (input, format) {

        //swap month and date first
        input = input.split('/');
        input[0] = input.splice(1, 1, input[0])[0];
        input = input.join('/');

        var date = new Date(Date.parse(input));
        if (input) {
            return $filter('date')(new Date(Date.parse(input)), format);
        } else {
            return null;
        }
    };
}])