39 lines
1.0 KiB
TypeScript
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);
|
|
}
|