All files / utils dateUtils.js

100% Statements 67/67
100% Branches 24/24
100% Functions 5/5
100% Lines 67/67

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 821x 75x 75x   1x 35x 35x 35x 35x 35x 35x 35x 35x 35x   1x 68x 68x 68x 68x 68x   1x 1x 1x 1x   1x 84x 1x 1x   83x 83x 83x   84x 1x 1x   84x 1x 1x 1x   84x 2x 2x 2x   84x 2x 2x 2x   77x 77x   1x 16x 16x 16x 16x 16x 16x 16x   16x 8x 5x 8x 3x 3x 3x 8x 8x 8x 8x 16x      
const padWithZero = (n) => {
  return n < 10 ? "0" + n : n;
};
 
const timestampToDate = (timestamp) => {
  var date = new Date(timestamp);
  return (
    date.getFullYear() +
    "-" +
    padWithZero(date.getMonth() + 1) +
    "-" +
    padWithZero(date.getDate())
  );
};
 
const daysSinceTimestamp = (date) => {
  var today = new Date();
  var startingDate = new Date(date);
  var timeDiff = Math.abs(today.getTime() - startingDate.getTime());
  return Math.ceil(timeDiff / (1000 * 3600 * 24));
};
 
const minutesInSeconds = 60;
const hourInSeconds = 60 * minutesInSeconds;
const dayInSeconds = 24 * hourInSeconds;
const weekInSeconds = 7 * dayInSeconds;
 
export function formatTime(timeString) {
  if (!timeString) {
    return "";
  }
 
  const now = new Date();
  const dateFromEpoch = new Date(timeString);
  const secondsPast = Math.floor((now - dateFromEpoch) / 1000);
 
  if (secondsPast < minutesInSeconds * 2) {
    return "Online now";
  }
 
  if (secondsPast < hourInSeconds) {
    const minutes = Math.floor(secondsPast / 60);
    return `${minutes} minutes ago`;
  }
 
  if (secondsPast < dayInSeconds) {
    const hours = Math.floor(secondsPast / 3600);
    return `${hours} hour${hours > 1 ? "s" : ""} ago`;
  }
 
  if (secondsPast < weekInSeconds) {
    const days = Math.floor(secondsPast / 86400);
    return `${days} day${days > 1 ? "s" : ""} ago`;
  }
 
  return dateFromEpoch.toLocaleDateString();
}
 
export function isFutureDate(startingDate) {
  const curr = new Date();
  const startYear = parseInt(startingDate);
  const startMonth = parseInt(startingDate.substring(5, 7));
  const startDate = parseInt(startingDate.substring(8, 10));
  const currYear = curr.getFullYear();
  const currMonth = curr.getMonth() + 1;
  const currDate = curr.getDate();
 
  if (startYear === currYear) {
    if (startMonth === currMonth) {
      return startDate > currDate;
    } else {
      // Stryker disable next-line all: mutation test unreasonable
      return startMonth > currMonth;
    }
  } else {
    // Stryker disable next-line all: mutation test unreasonable
    return startYear > currYear;
  }
}
 
export { timestampToDate, padWithZero, daysSinceTimestamp };