Files
Account/src/utils/formatSessionDate.tsx

39 lines
1.0 KiB
TypeScript

import { type TFunction } from 'i18next';
import { toLocaleDigits } from './persianDigit';
export function formatDate(
isoDate: string,
lang: string,
t: TFunction,
): string {
const date = new Date(isoDate);
const now = new Date();
const diffInMinutes = Math.floor(
(now.getTime() - date.getTime()) / (1000 * 60),
);
if (diffInMinutes < 1) return t('active.justNow');
if (diffInMinutes < 60) {
return toLocaleDigits(
t('active.minutesAgo', { count: diffInMinutes }),
lang,
);
}
const options: Intl.DateTimeFormatOptions = {
year: 'numeric',
month: 'short',
day: 'numeric',
hour: '2-digit',
minute: '2-digit',
hour12: false,
calendar: lang.startsWith('fa') ? 'persian' : 'gregory',
numberingSystem: lang.startsWith('fa') ? 'arab' : 'latn',
};
const displayLocale = lang.startsWith('fa') ? 'fa-IR' : 'en-US';
const formattedDate = new Intl.DateTimeFormat(displayLocale, options).format(
date,
);
return toLocaleDigits(formattedDate, lang);
}