46 lines
1.5 KiB
TypeScript
46 lines
1.5 KiB
TypeScript
'use client';
|
|
|
|
import { useMemo } from 'react';
|
|
import { useLocale } from 'next-intl';
|
|
import {
|
|
APP_DATE,
|
|
formatAppDate,
|
|
formatAppDateTime,
|
|
formatAppNumber,
|
|
formatAppTableDate,
|
|
formatAppTime,
|
|
formatAppTimeRange,
|
|
createAppDateFormatter,
|
|
} from '@/lib/i18n/format';
|
|
|
|
export function useAppFormatters() {
|
|
const locale = useLocale();
|
|
|
|
return useMemo(
|
|
() => ({
|
|
locale,
|
|
formatDate: (value: Parameters<typeof formatAppDate>[0], options?: Intl.DateTimeFormatOptions) =>
|
|
formatAppDate(value, locale, options),
|
|
formatTime: (value: Parameters<typeof formatAppTime>[0], options?: Intl.DateTimeFormatOptions) =>
|
|
formatAppTime(value, locale, options),
|
|
formatDateTime: (
|
|
value: Parameters<typeof formatAppDateTime>[0],
|
|
options?: Intl.DateTimeFormatOptions,
|
|
) => formatAppDateTime(value, locale, options),
|
|
formatTimeRange: (
|
|
start: Parameters<typeof formatAppTimeRange>[0],
|
|
end: Parameters<typeof formatAppTimeRange>[1],
|
|
options?: Intl.DateTimeFormatOptions,
|
|
) => formatAppTimeRange(start, end, locale, options),
|
|
formatTableDate: (value: Parameters<typeof formatAppTableDate>[0]) =>
|
|
formatAppTableDate(value, locale),
|
|
formatNumber: (value: number, options?: Intl.NumberFormatOptions) =>
|
|
formatAppNumber(value, locale, options),
|
|
dateFormatter: (options: Intl.DateTimeFormatOptions = APP_DATE.chartDay) =>
|
|
createAppDateFormatter(locale, options),
|
|
presets: APP_DATE,
|
|
}),
|
|
[locale],
|
|
);
|
|
}
|