Advertisement
Guest User

Untitled

a guest
Jan 18th, 2020
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.         .filter('dateDifference', function (authService, $translate) {
  2.             return function (startDate, endDate, places = 9) {
  3.                 if (startDate !== undefined) {                 
  4.                     //-- CHECK FOR PASSING IN SECONDS & CONVERT TO A TIMESTAMP
  5.                     if (startDate.toString().length < 10)
  6.                     {
  7.                         var currentTime = new Date(authService.getServerTime());
  8.                         currentTime = currentTime.getTime();
  9.                         currentTime -= startDate;
  10.                         startDate = currentTime;
  11.                     }
  12.                    
  13.                     //-- DATES TO INT, GET TOTAL SECONDS BETWEEN DATES
  14.                     var date1       = new Date(typeof startDate == 'string' ? startDate.replace(/ /, 'T') + 'Z' : startDate);
  15.                     var date2       = endDate !== undefined ? new Date(typeof endDate == 'string' ? endDate.replace(/ /, 'T') + 'Z' : ((endDate > 0) ? endDate : new Date(authService.getServerTime()))) : new Date(authService.getServerTime());
  16.                     var timeDiff    = Math.abs(date2.getTime() - date1.getTime());
  17.                     timeDiff        = Math.round(timeDiff / 1000);
  18.  
  19.                     //-- SET CURRENT VALUES
  20.                     var minutesRaw  = Math.floor(timeDiff / 60);
  21.                     var secondsRaw  = timeDiff - (minutesRaw * 60);
  22.                     var hoursRaw    = Math.floor(minutesRaw / 60);
  23.                     var daysRaw     = Math.floor(hoursRaw / 24);
  24.                     var weeksRaw    = Math.floor(daysRaw / 7);
  25.                     var yearsRaw    = Math.floor(weeksRaw / 52);
  26.  
  27.                     //-- CALCULATE COUNTDOWN VALUES
  28.                     minutesRaw  -= hoursRaw * 60;
  29.                     hoursRaw    -= daysRaw * 24;
  30.                     daysRaw     -= weeksRaw * 7;
  31.                     weeksRaw    -= yearsRaw * 52;
  32.  
  33.                     //-- PROPER GRAMMAR
  34.                     years   = ((yearsRaw > 0) ? yearsRaw +' year'+ (yearsRaw > 1 ? 's' : '') : '');
  35.                     weeks   = ((weeksRaw > 0) ? weeksRaw +' week'+ (weeksRaw > 1 ? 's' : '') : '');
  36.                     days    = ((daysRaw > 0) ? daysRaw +' day'+ (daysRaw > 1 ? 's' : '') : '');
  37.                     hours   = ((hoursRaw > 0) ? hoursRaw +' hour'+ (hoursRaw > 1 ? 's' : '') : '');
  38.                     minutes = ((minutesRaw > 0) ? minutesRaw +' min'+ (minutesRaw > 1 ? 's' : '') : '');
  39.                     seconds = ((secondsRaw > 0) ? secondsRaw +' sec'+ (secondsRaw > 1 ? 's' : '') : '');
  40.                    
  41.                     //-- BUILD STRING TO SHOW ONLY WHAT HAS A VALUE & PROPER COMMA PLACEMENT
  42.                     var timeString = '';
  43.                     if (places == 1)
  44.                     {
  45.                         timeString = ((years) ? years : timeString);
  46.                     }
  47.                     if (places >= 2)
  48.                     {
  49.                         timeString = ((weeks) ? ((timeString) ? timeString +', ' : '') + weeks : timeString);
  50.                     }
  51.                     if (places >= 3)
  52.                     {
  53.                         timeString = ((days) ? ((timeString) ? timeString +', ' : '') + days : timeString);
  54.                     }
  55.                     if (places >= 4)
  56.                     {
  57.                         timeString = ((hours) ? ((timeString) ? timeString +', ' : '') + hours : timeString);
  58.                     }
  59.                     if (places >= 5)
  60.                     {
  61.                         timeString = ((minutes) ? ((timeString) ? timeString +', ' : '') + minutes : timeString);
  62.                     }
  63.                     if (places >= 6)
  64.                     {
  65.                         timeString = ((seconds) ? ((timeString) ? timeString +', ' : '') + seconds : timeString);
  66.                     }
  67.                    
  68.                     //-- CHERRY PICK WHAT TO RETURN
  69.                     switch (places)
  70.                     {
  71.                         case 7: //-- ONLY YEARS
  72.                             timeString = years;
  73.                         break;
  74.                         case 8: //-- ONLY WEEKS
  75.                             timeString = weeks;
  76.                         break;
  77.                         case 9: //-- ONLY DAYS
  78.                             timeString = days;
  79.                             if (daysRaw == 0 && weeksRaw > 0)
  80.                             {
  81.                                 daysRaw = weeksRaw * 7;
  82.                                 timeString = ((daysRaw > 0) ? daysRaw +' day'+ (daysRaw > 1 ? 's' : '') : '');
  83.                             }
  84.                         break;
  85.                         case 10: //-- ONLY HOURS
  86.                             timeString = hours;
  87.                         break;
  88.                         case 11: //-- ONLY MINUTES
  89.                             timeString = minutes;
  90.                         break;
  91.                         case 12: //-- ONLY SECONDS
  92.                             timeString = seconds;
  93.                         break;
  94.                         case 13: //-- MINUTES + SECONDS
  95.                             timeString = minutes + ((minutes) ? ', ' : '') + seconds;
  96.                         break;
  97.                         case 14: //-- WEEKS + DAYS
  98.                             timeString = weeks + ((weeks) ? ', ' : '') + days;
  99.                         break;
  100.                         case 15: //-- DAYS + HOURS
  101.                             timeString = days + ((days) ? ', ' : '') + hours;
  102.                         break;
  103.                     }
  104.                    
  105.                     if (!timeString)
  106.                     {
  107.                         timeString = hours + ((hours) ? ', ' : '') + minutes;
  108.                     }
  109.                    
  110.                     return timeString;
  111.                 }
  112.             };
  113.         })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement