All files / utils dateUtils.js

100% Statements 47/47
100% Branches 20/20
100% Functions 4/4
100% Lines 47/47

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 601x 75x 75x   1x 35x 35x 35x 35x 35x 35x 35x 35x 35x   1x 65x 65x 65x 65x 65x   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      
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 { timestampToDate, padWithZero, daysSinceTimestamp };