mirror of
https://github.com/siteboon/claudecodeui.git
synced 2026-02-16 05:37:31 +00:00
26 lines
1.2 KiB
TypeScript
26 lines
1.2 KiB
TypeScript
import { TFunction } from 'i18next';
|
|
|
|
export const formatTimeAgo = (dateString: string, currentTime: Date, t: TFunction) => {
|
|
const date = new Date(dateString);
|
|
const now = currentTime;
|
|
|
|
// Check if date is valid
|
|
if (isNaN(date.getTime())) {
|
|
return t ? t('status.unknown') : 'Unknown';
|
|
}
|
|
|
|
const diffInMs = now.getTime() - date.getTime();
|
|
const diffInSeconds = Math.floor(diffInMs / 1000);
|
|
const diffInMinutes = Math.floor(diffInMs / (1000 * 60));
|
|
const diffInHours = Math.floor(diffInMs / (1000 * 60 * 60));
|
|
const diffInDays = Math.floor(diffInMs / (1000 * 60 * 60 * 24));
|
|
|
|
if (diffInSeconds < 60) return t ? t('time.justNow') : 'Just now';
|
|
if (diffInMinutes === 1) return t ? t('time.oneMinuteAgo') : '1 min ago';
|
|
if (diffInMinutes < 60) return t ? t('time.minutesAgo', { count: diffInMinutes }) : `${diffInMinutes} mins ago`;
|
|
if (diffInHours === 1) return t ? t('time.oneHourAgo') : '1 hour ago';
|
|
if (diffInHours < 24) return t ? t('time.hoursAgo', { count: diffInHours }) : `${diffInHours} hours ago`;
|
|
if (diffInDays === 1) return t ? t('time.oneDayAgo') : '1 day ago';
|
|
if (diffInDays < 7) return t ? t('time.daysAgo', { count: diffInDays }) : `${diffInDays} days ago`;
|
|
return date.toLocaleDateString();
|
|
}; |