Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .filter('dateDifference', function (authService, $translate) {
- return function (startDate, endDate, places = 9) {
- if (startDate !== undefined) {
- //-- CHECK FOR PASSING IN SECONDS & CONVERT TO A TIMESTAMP
- if (startDate.toString().length < 10)
- {
- var currentTime = new Date(authService.getServerTime());
- currentTime = currentTime.getTime();
- currentTime -= startDate;
- startDate = currentTime;
- }
- //-- DATES TO INT, GET TOTAL SECONDS BETWEEN DATES
- var date1 = new Date(typeof startDate == 'string' ? startDate.replace(/ /, 'T') + 'Z' : startDate);
- var date2 = endDate !== undefined ? new Date(typeof endDate == 'string' ? endDate.replace(/ /, 'T') + 'Z' : ((endDate > 0) ? endDate : new Date(authService.getServerTime()))) : new Date(authService.getServerTime());
- var timeDiff = Math.abs(date2.getTime() - date1.getTime());
- timeDiff = Math.round(timeDiff / 1000);
- //-- SET CURRENT VALUES
- var minutesRaw = Math.floor(timeDiff / 60);
- var secondsRaw = timeDiff - (minutesRaw * 60);
- var hoursRaw = Math.floor(minutesRaw / 60);
- var daysRaw = Math.floor(hoursRaw / 24);
- var weeksRaw = Math.floor(daysRaw / 7);
- var yearsRaw = Math.floor(weeksRaw / 52);
- //-- CALCULATE COUNTDOWN VALUES
- minutesRaw -= hoursRaw * 60;
- hoursRaw -= daysRaw * 24;
- daysRaw -= weeksRaw * 7;
- weeksRaw -= yearsRaw * 52;
- //-- PROPER GRAMMAR
- years = ((yearsRaw > 0) ? yearsRaw +' year'+ (yearsRaw > 1 ? 's' : '') : '');
- weeks = ((weeksRaw > 0) ? weeksRaw +' week'+ (weeksRaw > 1 ? 's' : '') : '');
- days = ((daysRaw > 0) ? daysRaw +' day'+ (daysRaw > 1 ? 's' : '') : '');
- hours = ((hoursRaw > 0) ? hoursRaw +' hour'+ (hoursRaw > 1 ? 's' : '') : '');
- minutes = ((minutesRaw > 0) ? minutesRaw +' min'+ (minutesRaw > 1 ? 's' : '') : '');
- seconds = ((secondsRaw > 0) ? secondsRaw +' sec'+ (secondsRaw > 1 ? 's' : '') : '');
- //-- BUILD STRING TO SHOW ONLY WHAT HAS A VALUE & PROPER COMMA PLACEMENT
- var timeString = '';
- if (places == 1)
- {
- timeString = ((years) ? years : timeString);
- }
- if (places >= 2)
- {
- timeString = ((weeks) ? ((timeString) ? timeString +', ' : '') + weeks : timeString);
- }
- if (places >= 3)
- {
- timeString = ((days) ? ((timeString) ? timeString +', ' : '') + days : timeString);
- }
- if (places >= 4)
- {
- timeString = ((hours) ? ((timeString) ? timeString +', ' : '') + hours : timeString);
- }
- if (places >= 5)
- {
- timeString = ((minutes) ? ((timeString) ? timeString +', ' : '') + minutes : timeString);
- }
- if (places >= 6)
- {
- timeString = ((seconds) ? ((timeString) ? timeString +', ' : '') + seconds : timeString);
- }
- //-- CHERRY PICK WHAT TO RETURN
- switch (places)
- {
- case 7: //-- ONLY YEARS
- timeString = years;
- break;
- case 8: //-- ONLY WEEKS
- timeString = weeks;
- break;
- case 9: //-- ONLY DAYS
- timeString = days;
- if (daysRaw == 0 && weeksRaw > 0)
- {
- daysRaw = weeksRaw * 7;
- timeString = ((daysRaw > 0) ? daysRaw +' day'+ (daysRaw > 1 ? 's' : '') : '');
- }
- break;
- case 10: //-- ONLY HOURS
- timeString = hours;
- break;
- case 11: //-- ONLY MINUTES
- timeString = minutes;
- break;
- case 12: //-- ONLY SECONDS
- timeString = seconds;
- break;
- case 13: //-- MINUTES + SECONDS
- timeString = minutes + ((minutes) ? ', ' : '') + seconds;
- break;
- case 14: //-- WEEKS + DAYS
- timeString = weeks + ((weeks) ? ', ' : '') + days;
- break;
- case 15: //-- DAYS + HOURS
- timeString = days + ((days) ? ', ' : '') + hours;
- break;
- }
- if (!timeString)
- {
- timeString = hours + ((hours) ? ', ' : '') + minutes;
- }
- return timeString;
- }
- };
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement