Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/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
如何通过AngularJS日期过滤器添加天数?_Angularjs_Date - Fatal编程技术网

如何通过AngularJS日期过滤器添加天数?

如何通过AngularJS日期过滤器添加天数?,angularjs,date,Angularjs,Date,我有以下代码: <body ng-app="my-app" ng-controller="my-controller"> <h1>Empty Angular App</h1> <span>{{"2015-07-08T15:10:10.530Z" | date:'medium'}}</span><br> <span>Expected: Aug 23, 2015 10:10:10 PM</span&

我有以下代码:

<body ng-app="my-app" ng-controller="my-controller">
  <h1>Empty Angular App</h1>
  <span>{{"2015-07-08T15:10:10.530Z" | date:'medium'}}</span><br>
  <span>Expected: Aug 23, 2015 10:10:10 PM</span>
</body>

空角度应用程序
{{“2015-07-08T15:10:10.530Z”|日期:'medium'}}
预计时间:2015年8月23日晚上10:10:10

我想在“2015-07-08T15:10:10.530Z”的基础上再加上46天。 预期结果为:2015年8月23日晚上10:10:10


感谢您的帮助

正如您所说,使用javascript是更好的选择

var app = angular.module('my-app', []);

app.controller("my-controller", function($scope) {
  $scope.name = "world";
  $scope.mydate = new Date("2015-07-08T15:10:10.530Z");

  var numberOfDaysToAdd = 46;
  $scope.newdate = $scope.mydate.setDate($scope.mydate.getDate() + numberOfDaysToAdd); 

});

您可以创建一个自定义过滤器,将日期从ISO8601格式转换为X天:

myApp.filter('kDateAddFromDateISO8601', [function() {
  return function(isoDateString, days) {

    var parts;
    var isoTime;
    var date;

    isoDateString = isoDateString || "";
    days = days || 0;

    parts = isoDateString.match(/\d+/g);
    isoTime = Date.UTC(parts[0], parts[1] - 1, parts[2], parts[3], parts[4], parts[5]);
    date = new Date(isoTime);

    if (days) {
      date.setDate(date.getDate() + days);
    }

    return date;
  };
}]);
然后您可以使用过滤器:

<div>{{"2015-07-08T15:10:10.530Z" | kDateAddFromDateISO8601 : 46 | date:'medium'}}</div>
{“2015-07-08T15:10:10.530Z”| kDateAddFromDateISO8601:46 |日期:'medium'}
输出:

2015年8月23日下午12:10:10


你说的“增加天数”是什么意思?这个问题不是很清楚,只是编辑一下描述。在“2015-07-08T15:10:10.530Z”中增加46天。ThanksHow你知道你想增加多少天吗?它将始终是46,如您的示例中所示,还是另一条数据?为什么你觉得过滤器是最好的方法呢?不,我不这么认为,我觉得javascript在这种情况下更合适。这正是我想要的,但是对于Angular 8。非常感谢你!