Files
L-Ami-Fiduciaire/resources/js/composables/useRelativeTime.ts

44 lines
1.2 KiB
TypeScript
Raw Normal View History

export function formatRelativeTime(isoTimestamp: string): string {
const date = new Date(isoTimestamp);
const now = new Date();
const diffMs = now.getTime() - date.getTime();
const diffMinutes = Math.floor(diffMs / (1000 * 60));
const diffHours = Math.floor(diffMs / (1000 * 60 * 60));
const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));
if (diffMinutes < 1) {
return "à l'instant";
}
if (diffMinutes < 60) {
return `il y a ${diffMinutes} min`;
}
if (diffHours < 24) {
return `il y a ${diffHours} h`;
}
const yesterday = new Date(now);
yesterday.setDate(yesterday.getDate() - 1);
if (
date.getDate() === yesterday.getDate() &&
date.getMonth() === yesterday.getMonth() &&
date.getFullYear() === yesterday.getFullYear()
) {
return 'hier';
}
if (diffDays < 7) {
return `il y a ${diffDays} ${diffDays === 1 ? 'jour' : 'jours'}`;
}
const day = String(date.getDate()).padStart(2, '0');
const month = String(date.getMonth() + 1).padStart(2, '0');
const year = date.getFullYear();
return `${day}/${month}/${year}`;
}
export function useRelativeTime() {
return { formatRelativeTime };
}