Files
2026-05-28 10:32:03 +03:30

37 lines
1.2 KiB
TypeScript

// 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,
};
}