All files / utils dateUtils.js

100% Statements 37/37
100% Branches 16/16
100% Functions 5/5
100% Lines 36/36

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  13x   10x 4x 4x     10x 127x 127x 127x 127x     10x 10x 10x 10x     88x 1x     87x 87x 87x   87x 1x     86x 1x 1x     85x 2x 2x     83x 2x 2x     81x         70x 70x 70x 70x 70x   70x          
 
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 makeCommonsStartEndDate () {
 
    const curr = new Date();
    const localTime = new Date(curr.getTime() - curr.getTimezoneOffset() * 60000);
    const today = localTime.toISOString().split('T')[0];
    const currMonth = localTime.getMonth() % 12;
    const nextMonth = new Date(localTime.getFullYear(), currMonth + 1, localTime.getDate()).toISOString().substr(0, 10);
 
    return [today, nextMonth];
 
}
 
export {timestampToDate, padWithZero, daysSinceTimestamp};