// composables/usePersianDate.ts import { format } from "date-fns-jalali"; import { faIR } from "date-fns-jalali/locale"; import { Jalali } from "jalali-ts"; export default function usePersianDate() { const formatToPersian = (isoDate: string): string => { try { const yearStr = isoDate.slice(0, 4); const year = Number(yearStr); // jDateTimeField from django_jalali sends Jalali years (13XX/14XX). // Normal DateTimeField sends Gregorian (19XX/20XX). Detect by year // and use jalali-ts to convert when needed — date-fns-jalali's // parseISO doesn't actually do calendar conversion. const date = !Number.isNaN(year) && year < 1700 ? Jalali.parse(isoDate).date : new Date(isoDate); if (isNaN(date.getTime())) return "Invalid date"; const persianDate = format(date, "yyyy/MM/dd", { locale: faIR }); const persianTime = format(date, "HH:mm", { locale: faIR }); return `${persianDate} | ${persianTime}`; } catch (error) { return "Invalid date"; } }; return { formatToPersian, }; }