OpenHands / frontend /src /utils /format-time-delta.ts
Backup-bdg's picture
Upload 565 files
b59aa07 verified
raw
history blame
1.03 kB
/**
* Formats a date into a compact string representing the time delta between the given date and the current date.
* @param date The date to format
* @returns A compact string representing the time delta between the given date and the current date
*
* @example
* // now is 2024-01-01T00:00:00Z
* formatTimeDelta(new Date("2023-12-31T23:59:59Z")); // "1s"
* formatTimeDelta(new Date("2022-01-01T00:00:00Z")); // "2y"
*/
export const formatTimeDelta = (date: Date) => {
const now = new Date();
const delta = now.getTime() - date.getTime();
const seconds = Math.floor(delta / 1000);
const minutes = Math.floor(seconds / 60);
const hours = Math.floor(minutes / 60);
const days = Math.floor(hours / 24);
const months = Math.floor(days / 30);
const years = Math.floor(months / 12);
if (seconds < 60) return `${seconds}s`;
if (minutes < 60) return `${minutes}m`;
if (hours < 24) return `${hours}h`;
if (days < 30) return `${days}d`;
if (months < 12) return `${months}mo`;
return `${years}y`;
};