Search code examples
javascriptangularjsangularjs-scopeangular-filters

Calculating date difference with angular filter


I needed to be able to calculate the difference between two days, inclusive, and display the difference. Ideally this would be via an angular filter so it can be used all over the application.


Solution

  • JS Filter

    generalFilters.filter('dateDiff', function () {
      var magicNumber = (1000 * 60 * 60 * 24);
    
      return function (toDate, fromDate) {
        if(toDate && fromDate){
          var dayDiff = Math.floor((toDate - fromDate) / magicNumber);
          if (angular.isNumber(dayDiff)){
            return dayDiff + 1;
          }
        }
      };
    });
    

    HTML to display the value.

    <div class="field-value">{{entry.toStr | dateDiff:entry.fromStr}} <ng-pluralize count="entry.toStr | dateDiff:entry.fromStr" when="{1:'Day', other: 'Days'}"></ng-pluralize></div>