【问题标题】:How to add Days through AngularJS Date Filter?如何通过 AngularJS 日期过滤器添加天数?
【发布时间】:2015-07-08 15:42:39
【问题描述】:

我有这个代码:

<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>

http://codepen.io/vicheanak/pen/MwVNwG/

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

感谢您的帮助

【问题讨论】:

  • “添加天数”是什么意思?这个问题不是很清楚
  • 很抱歉,只需编辑说明即可。将 46 天添加到“2015-07-08T15:10:10.530Z”。谢谢
  • 你怎么知道你想增加多少天?它会永远是 46,就像你的例子一样,还是另一条数据?为什么您认为过滤器是最好的方法?
  • 不,我不这么认为,我觉得javascript在这种情况下更合适。

标签: angularjs date


【解决方案1】:

您可以创建一个自定义过滤器来转换 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 年 8 月 23 日下午 12:10:10

Check the demo fiddle

【讨论】:

  • 这正是我想要的,但对于 Angular 8。非常感谢!
【解决方案2】:

如您所说,使用 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); 

});

http://codepen.io/anon/pen/MwVNpq

【讨论】:

    猜你喜欢
    • 2014-07-22
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    相关资源
    最近更新 更多