Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 扩展angularjs日期过滤器的日期格式_Javascript_Angularjs_Date - Fatal编程技术网

Javascript 扩展angularjs日期过滤器的日期格式

Javascript 扩展angularjs日期过滤器的日期格式,javascript,angularjs,date,Javascript,Angularjs,Date,Angularjs提供了一个用于格式化日期的。如何以以下格式获取日期 dd(st || nd || th) mm yyyy 1st May 2014 1<sup>st</sup> May 2014 dd(st|nd|th)mm yyyy 2014年5月1日 2014年5月1日 我应该创建一个新的自定义过滤器,还是可以通过扩展日期过滤器的格式。最好的方法是什么?正确,您可以创建自己的自定义过滤器,如: angular.module('', []) .filter('

Angularjs提供了一个用于格式化日期的。如何以以下格式获取日期

dd(st || nd || th) mm yyyy
1st May 2014
1<sup>st</sup> May 2014
dd(st|nd|th)mm yyyy
2014年5月1日
2014年5月1日

我应该创建一个新的自定义过滤器,还是可以通过扩展日期过滤器的格式。最好的方法是什么?

正确,您可以创建自己的自定义过滤器,如:

angular.module('', [])
  .filter('someFilter', function() {
    return function(input,param1) {
    ...
在html中,您需要做的就是将其用作任何其他筛选器,如
{{{somevalue | someFilter}}

回到日期问题,您可能知道的第二件事是,您可以通过注入
$filter
服务直接从代码调用过滤器;这将允许您从过滤器中获取任何值:

 var filteredDate = $filter('date')(new Date(input), 'dd MMMM');
总而言之,我认为这将是我推荐的实现定制过滤器的方法

 angular.module('', [])
      .filter('someFilter', function($filter) {
        return function(input) {
            var filteredYearMonth = $filter('date')(new Date(input), 'MMMM yyyy');
            var filteredDay = (new Date(input)).getDay();
            var arr = ['st', 'nd', 'rd']
            var myDate  arr[filteredDay] || "th" + filteredYearMonth;

            return myDate
        ...

编写自定义过滤器以实现此目的

filter('ordinal', function() {
  return function(input) {
    var s=["th","st","nd","rd"],
    v=input%100;
    return input+(s[(v-20)%10]||s[v]||s[0]);
  }
});

在这里检查工作的小提琴

我也有同样的要求,在我降落到这里之间,所以我在这里做了一些实验。 退房

var myApp=angular.module('myApp',[]).filter('ordinal',function()){
返回函数(输入){
var日期=新日期(输入);
var dayOfMonth=date.getDate();
var后缀=月日;
变量后缀=[“th”、“st”、“nd”、“rd”];
var相关数字=(月日<30)?月日%20:月日%30;

var suf=(relevantDigits为了完成您的任务,您需要一个过滤器,在给定数字时提供序数,并且只提供序数本身。(完整免责声明:我自己的项目)就是这样做的

按照自述文件将筛选器安装到您的项目中,简短版本如下:

bower安装--保存所有顺序
将以下行添加到.html文件中


最后添加模块作为依赖项

angular.module('demo',['ordinal']))
设置完成后,您可以通过将顺序过滤器和日期过滤器链接在一起来使用它们

<p>{{myDateObject | date:'dd'}}<sup>{{myDateObject | date:'dd' | ordinalOnly}}</sup> {{myDateObject | date :'MMMM yyyy'}}</p>
{{myDateObject | date:'dd'}{{myDateObject | date:'dd'| ordinalOnly}{{myDateObject | date:'MMMM yyyyy'}

您将得到您想要的结果:

2015年5月1日

<p>{{myDateObject | date:'dd'}}<sup>{{myDateObject | date:'dd' | ordinalOnly}}</sup> {{myDateObject | date :'MMMM yyyy'}}</p>
<p>1<sup>st</sup> May 2015</p>