16 lines
502 B
TypeScript
16 lines
502 B
TypeScript
const HOUR_MS = 60 * 60 * 1000;
|
|
const DAY_MS = 24 * HOUR_MS;
|
|
|
|
/** How long until a date, in whole days or hours: "6 days", "3 hours". */
|
|
export const timeLeft = (until: string | Date): string => {
|
|
const ms = new Date(until).getTime() - Date.now();
|
|
|
|
if (ms >= DAY_MS) {
|
|
const days = Math.ceil(ms / DAY_MS);
|
|
return `${days} ${days === 1 ? 'day' : 'days'}`;
|
|
}
|
|
|
|
const hours = Math.max(1, Math.ceil(ms / HOUR_MS));
|
|
return `${hours} ${hours === 1 ? 'hour' : 'hours'}`;
|
|
};
|