Files
mtdb_movie/common/resources/client/i18n/use-date-formatter.ts
maher 703f50a09d
Some checks failed
Build / run (push) Has been cancelled
first commit
2025-10-29 11:42:25 +01:00

29 lines
820 B
TypeScript
Executable File

import {DateFormatter} from '@internationalized/date';
import {useMemo, useRef} from 'react';
import {useSelectedLocale} from './selected-locale';
import {shallowEqual} from '../utils/shallow-equal';
export function useDateFormatter(
options?: Intl.DateTimeFormatOptions
): DateFormatter {
// Reuse last options object if it is shallowly equal, which allows the useMemo result to also be reused.
const lastOptions = useRef<Intl.DateTimeFormatOptions | undefined | null>(
null
);
if (
options &&
lastOptions.current &&
shallowEqual(options as any, lastOptions.current)
) {
options = lastOptions.current;
}
lastOptions.current = options;
const {localeCode} = useSelectedLocale();
return useMemo(
() => new DateFormatter(localeCode, options),
[localeCode, options]
);
}